我们的CometD/Gigaspaces应用程序在创建Bayeux Server的重复实例时遇到了问题。请看我之前发布的问题here。在研究了GigaSpace的这个问题后,我们发现在我们的应用程序上下文文件中定义的每个bean都被创建了两次,因为Gigaspaces对名为PU.XML的应用程序上下文文件有特殊的处理。我们已经通过重命名PU.XML文件解决了这个问题,但我们现在遇到的问题是我们在客户端没有接收到任何数据,并收到以下错误"NetworkError: 400未知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>当前应用Current 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>https://stackoverflow.com/questions/16937898
复制相似问题