我們的CometD/Gigaspaces應用程序創建Bayeux服務器的重複實例時遇到了問題。看到我之前發佈的問題here。 使用Gigaspaces調查此問題後,我們的應用程序上下文文件中定義的每個bean都創建了兩次,如 GigaSpaces對應用程序上下文文件PU.XML有特殊待遇。我們已經通過重命名PU.XML文件解決了這個問題,但是我們現在的問題是我們沒有收到客戶端的任何數據,並收到以下錯誤「NetworkError:400 Unknown Bayeux Transport - http://localhost:9292/cometd
」。Bayeux服務器配置問題
此前,當應用程序創建了一個Bayeux服務器的重複實例時,我們放置了一個解決方法來終止運行Bayeux服務器的線程的第一個實例,因此我們能夠發佈數據在我們的頻道上使用我們在 應用程序上下文文件中配置的Web套接字。
您可以查看我們當前的配置,並讓我知道是否有其他解決方案使用Spring正確配置和導出Bayeux服務器? Bayeux bean是否可能無法正確導出,或者導出得太晚?
我已經在下面發佈了我們更新的Web.XML和應用程序環境配置。我們的POM.XML中的CometD Version/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>