0

我通过代理 (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 不起作用。

你有什么想法为什么会出现这个问题以及我如何解决它。提前非常感谢。你真的在帮我!!!

亨里克

4

2 回答 2

0

我正在使用AJP进行请求重定向:

// enable mod_proxy_ajp
a2enmod proxy_ajp

代理配置如下所示:

ProxyPass /flexApp/messagebroker/ ajp://localhost:8009/flexApp/messagebroker/
于 2010-08-30T13:48:50.247 回答
0

BlazeDS 和 Flex 应用程序都在使用通道定义端点中的 URL。但是 URLs 实际上需要不同。BlazeDS 需要使用 myDataservice/messagebroker/amf URL,而 Flex 应用程序需要使用 data/messagebroker/amf URL。因此,您可以使两个 URL 相同,即。myDataservice 而不是数据。或者您可以在 Flex 应用程序中手动设置频道信息,而不是让它读取 services-config 文件。

于 2010-02-06T15:16:21.650 回答