我们有一个具有Java后端的Flex应用程序,我们在中间使用了BlazeDS。
我们使用Tomcat作为Java应用程序服务器,对于在物理或虚拟服务器上自托管应用程序的客户端群来说,它工作得很好。
我们已在 AWS 上的新实例上设置了部署。我们可以从实例本身很好地点击应用程序,但是通过我的家庭和工作机器上的浏览器上的公共DNS点击它,我收到以下消息:
检测到重复的基于 HTTP 的弹性会话,通常是由于 远程主机禁用会话 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应用程序发出两个请求的任何痕迹。
因此,我不确定为什么这个问题专门发生在 AWS 上,但不发生在我们的实验室或任何客户端自托管机器上,或者我们在 IBM Iaas 平台上的实例中。
有没有人见过这种情况发生过(特别是混合使用AWS)并看到了解决方法?
仅供参考:我是测试人员而不是开发人员,但如果需要,可以获得更多信息。 请通过评论提问。
你有跨域吗?这可能是问题所在。此外,似乎虽然第一个请求尚未结束,但已经提出了一个新请求,这将导致重复会话问题。