Проблема конфигурации сервера Bayeux

У нас возникла проблема с нашим приложением CometD/Gigaspaces, которое создавало дубликаты экземпляров сервера Bayeux. Смотрите мой предыдущий вопрос, размещенный здесь. После изучения этой проблемы с Gigaspaces выясняется, что каждый компонент, определенный в нашем файле контекста приложения, создавался дважды, поскольку GigaSpaces имеет специальную обработку для файлов контекста приложения, называемую PU.XML. Мы решили эту проблему, переименовав файл PU.XML, но теперь у нас проблема в том, что мы не получаем никаких данных на стороне клиента и получаем следующую ошибку "NetworkError: 400 Unknown Bayeux Transport - http://localhost:9292/cometd".

Ранее, когда приложение создавало дубликат экземпляра сервера Bayeux, мы устанавливали обходной путь для завершения первого экземпляра потока, на котором работал сервер Bayeux, и в результате мы смогли публиковать данные на наших каналах с помощью Web. Сокеты, которые мы настроили в файле контекста приложения.

Не могли бы вы взглянуть на нашу текущую конфигурацию и сообщить, есть ли альтернативное решение для правильной настройки и экспорта сервера Bayeux с использованием Spring? Возможно ли, что bean-компонент Bayeux экспортируется неправильно или экспортируется слишком поздно?

Я разместил наши обновленные конфигурации Web.XML и Application Context ниже. Версия / файлы Jar CometD в нашем POM.XML такие же, как мой предыдущий пост. Если вам нужна дополнительная информация. пожалуйста, дай мне знать.

Текущий 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>

Текущее приложение Context-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>

1 ответ

Решение

Размещенный вами код верен и практически идентичен тесту, представленному в CometD, см. Здесь и здесь.

У вас есть что-то еще, и журналы отладки на клиенте и сервере помогут вам понять.

Другие вопросы по тегам