我在 JBoss-5.1.0 上部署了一个 Java EE 应用程序。为了获得额外的安全性,我在 JBoss 前面设置了启用 Apache + 的 ssl。Tomcat 使用(端口 8001 上的 AJP 1.3)与服务器通信。所以我的配置看起来像:
tomcat:443 (ssl) ---|--- Jboss:8080 (IpAddress:8080) (http)
这种配置似乎适用于除 flex 部分之外的所有静态和动态页面。当我尝试访问 flex 部分的任何内容时,我的问题就开始了。AMF 通道失败,我可以在服务器日志中看到以下堆栈跟踪:
2012-04-13 16:19:50,940 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/catissuecore].[MessageBrokerServlet]] (ajp-127.0.0.1-8009- 4) Servlet MessageBrokerServlet 的 Servlet.service() 抛出异常 flex.messaging.security.SecurityException:必须通过安全协议联系安全端点“/messagebroker/amfsecure”。 在 flex.messaging.endpoints.AbstractEndpoint.validateRequestProtocol(AbstractEndpoint.java:862) 在 flex.messaging.endpoints.AbstractEndpoint.service(AbstractEndpoint.java:630) 在 flex.messaging.endpoints.AMFEndpoint.service(AMFEndpoint.java:99 ) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 在 org.apache.catalina.core .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) 在 org.apache.catalina.core.StandardContextValve 的 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) .invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92 ) 在 org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 在 org.apache.catalina 的 org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)。 core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 在 org.apache.catalina .core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:436 ) 在 org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 在 java.lang。线程.run(线程.java:662)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 调用(CachedConnectionValve.java:158) .coyote.ajp.AjpProcessor.process(AjpProcessor.java:436) 在 org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker .run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:662)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 调用(CachedConnectionValve.java:158) .coyote.ajp.AjpProcessor.process(AjpProcessor.java:436) 在 org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker .run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:662)ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java: 662)ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java: 662)
我在 remote-config.xml 中定义了以下通道:
<default-channels>
<channel ref="my-amf"/>
<channel ref="my-secure-amf"/>
</default-channels>
我的 services-config.xml 具有以下配置
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>
<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
<endpoint uri="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
<properties>
<!--HTTPS requests on some browsers do not work when pragma "no-cache" are set-->
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
有没有人面临这个问题?
任何指针都会很有用。