我们的CometD / Gigaspaces应用程序遇到问题,创建了Bayeux Server的重复实例。请参阅我之前发布的问题here。
在使用Gigaspaces调查此问题之后,结果发现我们的应用程序上下文文件中定义的每个bean都被创建了两次
GigaSpaces对名为PU.XML的应用程序上下文文件进行了特殊处理。我们通过重命名PU.XML文件解决了这个问题,但是
我们现在遇到的问题是我们没有在客户端收到任何数据并收到以下错误“NetworkError:400 Unknown Bayeux Transport - http://localhost:9292/cometd
”。
以前,当应用程序创建Bayeux Server的重复实例时,我们会采用一种解决方法来终止第一个 Bayeux Server运行的线程的实例,因此我们能够使用我们在其中配置的Web套接字在我们的通道上发布数据 应用程序上下文文件。
您是否可以查看我们当前的配置,如果有其他解决方案可以使用Spring正确配置和导出Bayeux Server,请告诉我们? Bayeux bean是否有可能无法正确导出或者出口太晚了?
我在下面发布了更新的Web.XML和应用程序上下文配置。我们的POM.XML中的CometD版本/ Jars与我以前的帖子相同。如果您需要更多信息。请告诉我。
当前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>