首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bayeux服务器配置问题

Bayeux服务器配置问题
EN

Stack Overflow用户
提问于 2013-06-05 18:46:10
回答 1查看 1.8K关注 0票数 0

我们的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:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 19:27:46

您发布的代码是正确的,实际上与CometD中的测试完全相同,请参阅herehere

您还有其他事情要做,客户端和服务器上的调试日志将帮助您理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16937898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档