우리는 Bayeux 서버의 복제 인스턴스를 생성하는 CometD/Gigaspaces 애플리케이션에 문제가있었습니다. 내 이전 질문은 here으로 게시 됨. Gigaspaces로이 문제를 조사한 후 응용 프로그램 컨텍스트 파일에 정의 된 각 빈이 으로 두 번 생성되었음을 알게되었습니다. GigaSpaces는 PU.XML이라는 응용 프로그램 컨텍스트 파일에 대한 특별한 처리를합니다. 우리는 PU.XML 파일의 이름을 변경하여이 문제를 해결했지만 우리가 지금 가지고있는 문제는 클라이언트 측에서 데이터를받지 못하고 "NetworkError : 400 Unknown Bayeux Transport - http://localhost:9292/cometd
"오류가 발생한다는 것입니다.Bayeux 서버 설정 문제
이전에는 응용 프로그램이 Bayeux Server의 중복 인스턴스를 생성 할 때 Bayeux Server가 실행중인 스레드의 첫 번째 인스턴스를 종료하기위한 임시 해결책을 제시 했으므로 데이터를 게시 할 수있었습니다 응용 프로그램 컨텍스트 파일에서 구성한 웹 소켓을 사용하여 우리 채널에 있습니다.
현재 구성을 살펴보고 Spring을 사용하여 Bayeux Server를 올바르게 구성하고 내보낼 수있는 대안이 있는지 알려주십시오. Bayeux 빈이 올바르게 반출되지 않거나 너무 늦게 반출 될 가능성이 있습니까 ??
업데이트 된 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>