场景描述: 我的程序是flex+java+blazeDS+activeMQ实现的,它通过Flex Consumer从activeMQ订阅jms消息,目前我在同一个服务器上交付了两个tomcat,它们都包含我的程序,而ActiveMQ在另一个服务器,现在我在同一种浏览器中打开这两个应用程序,例如 IE 或 Chrome,无论如何,url 就像http://localhost: 8080 /HelloWord/index.html , http://localhost: 8181 / HelloWord/index.html
问题: 第一个应用程序 url 是http://localhost: 8080 /HelloWord/index.html,我在 ie 中打开它,它可以很好地订阅消息,但是当我打开第二个 url 是http://的应用程序时localhost: 8181 /HelloWord/index.html即发生意外,两个应用程序无法订阅消息。
错误日志: 1.flex 客户端日志(flash.log): 检测到重复的基于 HTTP 的 FlexSession,通常是由于远程主机禁用会话 cookie。必须启用会话 cookie 才能正确管理客户端连接 2.java 控制台日志: flex.messaging.client.FlexClientNotSubscribedException:客户端在端点“my-polling-amf”上没有活动订阅。 在 flex.messaging.client.FlexClient.throwNotSubscribedException(FlexClient.java:1789) 在 flex.messaging.client.FlexClient.pollWithWait(FlexClient.java:967) 在 flex.messaging.endpoints.BasePollingHTTPEndpoint.handleFlexClientPoll(BasePollingHTTPEndpoint.java:538 ) 在 flex.messaging.endpoints.AbstractEndpoint.handleFlexClientPollCommand(AbstractEndpoint.java:1151) 在 flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:965) 在 flex.messaging.endpoints.AbstractEndpoint$$FastClassByCGLIB$$1a3ef066。在 org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692) 在 org.springframework.aop 的 net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 的 invoke()。框架.ReflectiveMethodInvocation。org.springframework.flex.core.MessageInterceptionAdvice.invoke(MessageInterceptionAdvice.java:66) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework .aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.Cglib2AopProxy$FixedChainStaticTargetInterceptor.intercept (Cglib2AopProxy.java:576) 在 flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$3ae4b8ad.serviceMessage() 在 flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103) 在 flex.messaging.endpoints .amf.LegacyFilter.invoke(LegacyFilter.java:158) 在 flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44) 在 flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)在 flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166) 在 flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291) 在 flex.messaging.endpoints.AMFEndpoint$$EnhancerByCGLIB$$$3ae4b8ad .service() at org.springframework.flex.servlet.MessageBrokerHandlerAdapter.handle(MessageBrokerHandlerAdapter.java:108) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) at org.springframework.web.servlet .DispatcherServlet.doService(DispatcherServlet.java:716) 在 org.springframework.web.servlet。FrameworkServlet.processRequest(FrameworkServlet.java:647) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet .http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210 ) 在 org.apache.catalina.authenticator.AuthenticatorBase 的 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 的 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)。在 org.apache.catalina.core.StandardHostValve 调用(AuthenticatorBase.java:462)。调用(StandardHostValve.java:164)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)在 org.apache .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) 在 org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java :286) 在 org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:272) 在 org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1730) 在 java。 util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker。运行(ThreadPoolExecutor.java:908)
我所做的测试: 1.FlexClient.getInstance().id = UIDUtil.createUID(); 无效 2.FlexClient.getInstance().id = null; 无效 3.使用不同的浏览器,一个用ie,一个用chrome,打开两个应用,都可以;4.一个服务器一个tomcat,用同类型的浏览器ie打开就可以了;5.使用flex MXML中的customer AMFChannel或flex-config.xml中默认的AMFChannel定义,无效;
网友进阶: 1.http://blogs.adobe.com/lin/2011/05/duplication-session-error.html 2.http://stackoverflow.com/questions/7659775/duplicate-session-error-when -perform-proxy-lookup 这两项无效;
以前有人遇到过这种情况吗?任何建议我都会感激。