我通过代理 (Apache) 在 Tomcat 5.5 上使用带有 BlazeDS 的 Flex 时遇到问题。我已经搜索过了,但没有找到解决我问题的答案。我希望你们能帮助我。:-)
我们的场景如下:
Flex-App 使用 BlazeDS 与我们在 Tomcat 5.5 上的 Dataservice 进行通信。Webapp 启用了 balze,服务配置包含如下通道定义:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://xxx.xxx.xxx.xxx:8180/myDataService/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint">
</channel-definition>
我将 Flex 服务器根 URL 设置为http://xxx.xxx.xxx.xxx:8180/myDataService
(上下文根:/myDataService)并针对此服务配置编译我的 flex 应用程序。
之后,我将我的 flex 应用程序和我的数据服务部署在一个 IP 地址为 xxx.xxx.xxx.xxx 的服务器上。这两个应用程序在使用http://xxx.xxx.xxx.xxx:8180/myFlexApp
或用于数据服务之后可用:http://xxx.xxx.xxx.xxx:8180/myDataservice
tomcat 正在侦听端口 8180。
如果我使用带有 IP 地址的 URL 打开我的 flex 应用程序,则一切正常。我的应用程序正在完美地接收数据。
好的。到目前为止一切都很好。
现在我想使用代理服务器(通过 apache http 服务器)来隐藏 ip 并使用域名。
我对我的服务配置进行了以下更改:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://mydomain.com/data/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint">
</channel-definition>
我将 Flex 服务器根 URL 设置为http://mydomain.com/data
(Context Root /data) 并针对此服务配置编译我的 flex 应用程序。
我再次将应用程序部署在与以前相同的 tomcat 上。
现在,我在名为 mydomain.com 的 apache 目录 (etc/apache2/sites-available/) 的站点可用(启用站点)文件夹中创建了一个条目,我创建了一个具有服务器名称 www.mydomain.com 和 ServerAlias mydomain 的虚拟主机。 com。我还在 Proxy 块中添加了必要的规则以及虚拟主机定义所需的其他内容。此文件中包含以下 ProxyPass/ProxyPassReverse 条目:
ProxyPass /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp
ProxyPassReverse /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp
ProxyPass /data http://89.19.229.148:8180/myDataservice
ProxyPassReverse /data http://89.19.229.148:80/myDataservice
之后,我可以http://www.mydomain.com/flexApp
在浏览器中打开 flex 应用程序并加载它。但是当它尝试使用 blazeds 联系数据服务时会抛出错误消息。我什至无法打开网址http://mydomain.com/data/messagebroker/amf
。显示 404 错误。之前 - 使用 IP 地址 - 显示一个空白页面。奇怪的是,非火焰 Servlet 工作正常。例如,我可以打开http://mydomain.com/data/myServlet
它并且它可以工作。只有 Blaze 不起作用。
你有什么想法为什么会出现这个问题以及我如何解决它。提前非常感谢。你真的在帮我!!!
亨里克