使用SSL在负载平衡环境中设置Flex应用程序时出现问题

时间:2016-02-10 10:12:23

标签: java flex ssl https load-balancing

我使用flex 3.0在我的应用程序中开发了仪表板。为此,我在flex应用程序周围使用了JSP包装器。我的应用程序在JBoss应用服务器上运行。对于flex应用程序和我的应用程序之间的通信,我正在使用LCDS。 HTTPService组件用于从服务器接收数据。在service-config.xml中为amf和http通道以及安全安全模式和非安全模式提供了通道定义。在我的proxy-config.xml中,我定义了频道和目的地。

services-config.xml

...
...

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
    <endpoint url="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 url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
    <properties>
          <add-no-cache-headers>false</add-no-cache-headers>
    </properties>
</channel-definition>

<channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
    <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
</channel-definition>

<channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
    <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
    <properties>
        <add-no-cache-headers>false</add-no-cache-headers>
    </properties>
</channel-definition>


...
...



proxy-config.xml



...
...

<default-channels>
    <channel ref="my-http"/>
    <channel ref="my-amf"/>
    <channel ref="my-secure-http"/>
    <channel ref="my-secure-amf"/>
</default-channels>

...
...

<destination id="dashboardService">
    <properties>
<url>/kr/servlet/DashboardServlet</url>
    </properties>
</destination>

<destination id="dashboardJSPService">
    <properties>
<url>/kr/krportal/dashboardJSPService.jsf</url>
    </properties>
</destination>



...

...

在我的开发环境中,安全和非安全模式都运行良好。现在,当我将它部署在负载均衡器(仅接受安全请求,如果请求不安全,将其重定向到安全URL)后面时,消息代理servlet没有响应。我观察到的更多事情是当环境非负载平衡时,有'http://{server.name}:{server.port}/{context.root}/messagebroker/http'.之类的请求,这些请求是请求后的。但是在带有ssl的负载均衡环境中,请求再次像'http://{server.name}:{server.port}/{context.root}/messagebroker/http'这是一个post请求,它被重定向到'https://{server.name}:{server.port}/{context.root}/messagebroker/http'这是一个get请求。此get请求返回的内容为null。

寻找一些评论

由于

1 个答案:

答案 0 :(得分:0)

此配置文件由flex和lcds使用。 Flex使用它将消息发送到特定端点,并且lcds使用此文件实际创建端点。您会注意到您看到/ amf,/ amfsecure,/ http和/ httpsecure的网址末尾。如果您的负载均衡器正在将http://domain.com/app/messagebroker/amf之类的呼叫重定向到https://domain.com/app/messagebroker/amf,那么它将失败,因为ssl端点以/ amfsecure结束。