【发布时间】:2012-03-21 13:00:14
【问题描述】:
我正在尝试设置一个场景,让 Flex 应用程序能够使用在两个不同的实现 BlazeDS 的 Web 应用程序中编写的资源。
我最初尝试通过specifying a channel set in my mxml code 来做,然后将其设置为mxml 中服务的通道集。但是,尽管这有效,但我收到了重复的会话错误。
one of the answers to my question linked to above 中建议我可以/应该看到有关设置具有不同端点的通道的信息。我想这意味着 Flex 应用程序只会连接到它所看到的一项服务,但该服务实际上也会从另一个位置提供该服务。
我尝试在我的 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"/>
</channel-definition>
<channel-definition id="my-amf2" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://localhost:7001/dataservice1/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
但是当我尝试启动我的服务器时,我的 weblogic 控制台中出现以下错误。
无法注册端点“my-amf”,因为它的 URL, '/messagebroker/amf',已被端点'my-amf2'使用
和
“MessageBrokerServlet”在 Web 启动时无法预加载 应用程序:“/dataservice2”。 flex.messaging.config.ConfigurationException:无法注册 端点 'my-amf' 因为它的 URL '/messagebroker/amf' 已经是 由端点“my-amf2”使用
和
无法将应用程序的激活状态设置为 true '_appsdir_DataService2_dir'。 weblogic.application.ModuleException: [HTTP:101216]Servlet:“MessageBrokerServlet”无法预加载 在 Web 应用程序中启动:“/dataservice2”。
我猜这是因为您只能拥有一个 mx.messaging.channels.AMFChannel 类的频道。这是正确的吗?
一般来说,有没有办法解决我遇到的任何问题?我愿意接受不同的解决方案。
我已经用谷歌搜索和阅读了几个小时,但找不到任何关于此的信息。
我们希望有一个在所有应用程序之间共享的通用功能服务和一个提供特定于该应用程序的服务的应用程序特定服务。
【问题讨论】:
-
我认为,正如错误消息所述,您应该简单地为 my-amf2 提供不同的端点 URL。当然,您必须在 web.xml 中设置 servlet。
-
请原谅我的无知:据我所知,URL 已经不同,因为它具有不同的端口。我不确定该怎么做。你能详细说明一下吗?将不胜感激。
-
你确定它不一样吗?从我可以看到
{server.port}令牌很可能被相同的端口替换。您可以使用 FireBug 或 Charles 来准确监控它尝试连接的地址。 -
我 100% 确定。正在启动 dataservice2 的服务器位于端口 7002 上,而另一个服务 (dataservice1) 位于端口 7001 上。我无法通过 FireBug 进行检查,因为服务器甚至无法正常启动。跨度>
-
我不这么认为:已经有不同的通道具有不同的端点(my-amf、my-polling-amf、my-streaming-amf、...)。但是我一直在重新阅读该错误消息,似乎 BlazeDS 只是使用“/messagebroker/amf”来验证端点是否已经注册。在这种情况下,您可以通过更改 servlet 名称(例如更改为“/messagebroker/amf2”)或创建 .为此,您只需更改端点 url,因为我认为它会自动映射到 MessageBrokerServlet。 '/messagebroker/' 部分是必需的。
标签: apache-flex blazeds