gpt4 book ai didi

apache-flex - BlazeDS Servlet 未通过代理响应

转载 作者:行者123 更新时间:2023-11-28 23:54:30 26 4
gpt4 key购买 nike

我在通过代理 (Apache) 在 Tomcat 5.5 上将 Flex 与 BlazeDS 结合使用时遇到问题。我已经搜索过了,但没有找到解决我问题的答案。我希望你们能帮助我。 :-)

我们的场景如下:

Flex-App 使用 BlazeDS 与我们在 Tomcat 5.5 上的数据服务进行通信。 Webapp 启用了 balze,服务配置包含如下 channel 定义:

<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 应用程序.

之后,我在 IP 地址为 xxx.xxx.xxx.xxx 的服务器上部署了我的 flex 应用程序和数据服务。之后这两个应用程序可用使用 http://xxx.xxx.xxx.xxx:8180/myFlexApp 或数据服务:http://xxx.xxx.xxx.xxx:8180/myDataservicetomcat 正在监听端口 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(上下文根/data)并根据此服务配置编译我的 flex 应用程序。

我再次在同一个 tomcat 上部署应用程序。

现在我在我的 apache 目录 (etc/apache2/sites-available/) 的 sites-available (sites-enabled) 文件夹中创建一个名为 mydomain.com 的条目我使用 ServerName www.mydomain.com 和 ServerAlias mydomain.com 创建了一个虚拟主机。我还在代理 block 中添加了必要的规则,以及虚拟主机定义所需的其他内容。此文件中包含以下 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 联系数据服务时会抛出一条错误消息。我什至无法打开 URL http://mydomain.com/data/messagebroker/amf。显示 404 错误。之前 - 使用 ip 地址 - 显示空白页。奇怪的是,非 blaze Servlet 工作正常。例如。我可以打开 http://mydomain.com/data/myServlet 并且它有效。只有 Blaze 不起作用。

您是否知道为什么会出现此问题以及我如何解决它。非常感谢。你真是帮了我一把!!!

亨里克

最佳答案

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

关于apache-flex - BlazeDS Servlet 未通过代理响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com