基于 HTTPS 的 BlazeDS
我正在尝试将 BlazeDS 配置为通过 HTTPS 工作。我们在前面设置了 Apache,将所有 http 流量重定向到 https。然后 Apache 通过 http 与应用程序(JBoss AS 5.1)进行通信。
我已经为 BlazeDS 尝试了很多配置,最后以下解决方案对我有用:
services-config.xml
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
<service-include file-path="messaging-config.xml" />
</services>
<channels>
<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.AMFEndpoint" />
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
</channels>
</services-config>
remoting-config.xml
<service id="remoting-service" class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-secure-amf"/>
</default-channels>
<destination id="MyService" >
<properties>
<source>path.to.my.Service</source>
<scope>application</scope>
</properties>
</destination>
这里的问题是,在 my-secure-amf 通道中,我在通道定义中使用 mx.messaging.channels.SecureAMFChannel
,并使用 flex.messaging.endpoints.AMFEndpoint
(不是flex.messaging.endpoints.SecureAMFEndpoint
)。 这可能与 Apache-Jboss 设置有关,但我没有找到任何解释不同标签实际定义的内容。
为了理解这一切,有人可以解释一下使用不同的 url 和类定义通道和端点时会发生什么吗?
I'm trying to configure BlazeDS to work over HTTPS. We've got Apache in the front that is set to redirect all http traffic to https. Apache then communicates with the application (a JBoss AS 5.1) via http.
I've tried a lot of configurations for BlazeDS, and finally the following solution worked for me:
services-config.xml
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
<service-include file-path="messaging-config.xml" />
</services>
<channels>
<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.AMFEndpoint" />
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
</channels>
</services-config>
remoting-config.xml
<service id="remoting-service" class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-secure-amf"/>
</default-channels>
<destination id="MyService" >
<properties>
<source>path.to.my.Service</source>
<scope>application</scope>
</properties>
</destination>
The thing here is that in my-secure-amf channel, I use mx.messaging.channels.SecureAMFChannel
in the channel-definition, and flex.messaging.endpoints.AMFEndpoint
(not flex.messaging.endpoints.SecureAMFEndpoint
).
This has probably something with the Apache-Jboss setup to do, but I haven't found anything that explains what the different tags actually define.
To get some sense in all of this, could someone explain what happens when defining channels and endpoint, using different urls and classes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它之所以有效,是因为 Flex 应用程序正在创建 SecureAMFChannel 并使用转码的 url 信息 (url = https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure) 连接到你的阿帕奇服务器。但是,由于 Apache 配置为使用 HTTP 连接到应用程序,因此您无法使用安全端点(端点将检查您的 url 方案前面是否有“https”,如果未找到,则会抛出错误)。
我在我的一个应用程序中使用完全相同的配置(我有一个硬件平衡器而不是 Apache 服务器)。
It works because the Flex application it is creating a SecureAMFChannel and is using the transcoded url information (url = https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure) to connect to your Apache server. However because Apache is configured to connect to the application using HTTP you can't use a secure endpoint (the endpoint will check for "https" in front of your url scheme and it will throw an error if it's not found).
I'm using exactly the same configuration in one of my applications (I have a hardware balancer instead of an Apache server).