我们的CometD/Gigaspaces应用程序在创建Bayeux Server的副本实例时遇到了一个问题。看到我之前的问题张贴在这里。在使用Gigaspaces调查了这个问题之后,我们发现在应用程序上下文文件中定义的每个bean都被创建了两次GigaSpaces对称为PU.XML的应用程序上下文文件有特殊处理。我们通过重命名PU.XML文件解决了这个问题我们现在遇到的问题是,我们没有在客户端接收任何数据,并收到以下错误"NetworkError: 400 Unknown Bayeux Transport - http://localhost:9292/cometd
"。
前面,当应用程序创建Bayeux Server的副本实例时,我们设置了一个解决方法来终止第一个实例因此,我们能够使用Web Sockets在我们的通道上发布数据,我们在应用程序上下文文件。
你能看看我们目前的配置,并告诉我是否有一个替代的解决方案来正确配置和导出使用Spring的Bayeux服务器吗?是否有可能Bayeux bean没有正确导出或者导出太晚?
我已经在下面发布了我们更新的Web.XML和应用程序上下文配置。我们的POM.XML中的CometD版本/jar与我之前的帖子相同。如果你需要进一步的信息。请让我知道。
当前web . xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>CometDApplication</display-name>
<servlet>
<servlet-name>cometd</servlet-name>
<servlet-class>org.cometd.server.CometdServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cometd</servlet-name>
<url-pattern>/cometd/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- <listener>
<listener-class>org.openspaces.pu.container.jee.context.ProcessingUnitContextLoaderListener</listener-class>
</listener>-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-gigaspaces.xml</param-value>
</context-param>
</web-app>
当前applicationContext-gigaspaces.XML :
<bean id="Bayeux" class="org.cometd.server.BayeuxServerImpl"
init-method="start" destroy-method="stop">
<property name="options">
<map>
<entry key="logLevel" value="0" />
<entry key="timeout" value="15000" />
</map>
</property>
<property name="transports">
<list>
<!-- The order of the following transports dictates the type of transport
used i.e. Web Sockets then JsonTransport (a.k.a long-polling) -->
<bean id="websocketTransport" class="org.cometd.websocket.server.WebSocketTransport">
<constructor-arg ref="Bayeux" />
</bean>
<bean id="jsonTransport" class="org.cometd.server.transport.JSONTransport">
<constructor-arg ref="Bayeux" />
</bean>
<bean id="jsonpTransport" class="org.cometd.server.transport.JSONPTransport">
<constructor-arg ref="Bayeux" />
</bean>
</list>
</property>
</bean>
<!-- Export the Bayeux Server to the servlet context via springs ServletContextAttributeExporter -->
<bean id="ContextExporter"
class="org.springframework.web.context.support.ServletContextAttributeExporter">
<property name="attributes">
<map>
<entry key="org.cometd.bayeux">
<ref local="Bayeux" />
</entry>
</map>
</property>
</bean>
您发布的代码是正确的,并且几乎与CometD中的测试相同,请参阅这里和这里。