我们有一个带有 Java 后端的Flex 应用程序,我们在中间使用了 BlazeDS。
我们使用 Tomcat 作为 Java 应用程序服务器,它适用于在物理或虚拟服务器上自行托管应用程序的客户群。
我们已经在 AWS 上的一个新实例上设置了部署。我们可以从实例本身很好地访问应用程序,但是通过我的家庭和工作机器上的浏览器上的公共 DNS 访问它,我收到以下消息:
检测到重复的基于 HTTP 的 FlexSession,通常是由于远程主机禁用了会话 cookie。必须启用会话 cookie 才能正确管理客户端连接。
我们的客户端日志记录有更多信息,您可以看到它在收到错误之前进行了 2 次调用:
6:58:01:542 pm [INFO] au.com.esriau.dekho.business.AbstractDelegate - calling SessionService.getSessionInfo
6:58:01:543 pm [DEBUG] au.com.esriau.dekho.business.AbstractDelegate - args: (Array)#0
[0] "0A86A336:0137C62A4BBD:ADB6:1191EBC5"
6:58:01:544 pm [INFO] au.com.esriau.dekho.view.original.CoordinatesView - initilization
6:58:01:545 pm [INFO] au.com.esriau.dekho.business.AbstractDelegate - calling ConfigurationService.getCoordinateSystems
6:58:01:545 pm [DEBUG] au.com.esriau.dekho.business.AbstractDelegate - args: (Array)#0
[0] "0A86A336:0137C62A4BBD:ADB6:1191EBC5"
6:58:01:546 pm [INFO] au.com.esriau.dekho.view.original.ScaleView - initilization
6:58:01:991 pm [ERROR] au.com.esriau.dekho.utilities.AlertUser - a fault has occurred
- Fault Details:
- Fault Code: Server.Processing.DuplicateSessionDetected
- Fault String: Detected duplicate HTTP-based FlexSessions, generally due to the remote host disabling session cookies. Session cookies must be enabled to manage the client connection correctly.
我通过 SE-SO 找到了一些很棒的链接,这很好地解释了这个错误。
- 我的浏览器没有禁用 Cookie,因此可以排除这种情况。
- 我根本没有在 AWS 上实现负载平衡,它只是我遇到的一个实例。
- 通过查看 Firebug 和客户端日志,我看不到任何 Flex App 发出两个请求的痕迹。
因此,我不确定为什么这个问题特别发生在 AWS 上,但不会发生在我们的实验室或我们的任何客户自托管机器上,或者我们在IBM 的 Iaas平台上的实例上。
以前有没有人见过这种情况(特别是与 AWS 混合使用)并看到过解决方法?
仅供参考:我是测试人员而不是开发人员,但如果需要,可以获取更多信息。请通过评论询问。