How can I fix Missing WebSocket ServerContainer enabling WebSockets with CometD, Jetty and Spring?

516 views
Skip to first unread message

Diego Gliosca

unread,
Oct 29, 2015, 9:59:25 AM10/29/15
to cometd-users
I'm experiencing a problem trying to enable WebSockets on CometD. My configuration is the following: 
- CometD 3.0.5 
- Jetty 9.0.6, 
- SpringMVC 3.2.4 

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

    <servlet>
        <servlet-name>cometd</servlet-name>
            <servlet-class>org.cometd.server.CometDServlet</servlet-class>
            <async-supported>true</async-supported>
        </servlet>

        <servlet-mapping>
            <servlet-name>cometd</servlet-name>
            <url-pattern>/cometd/*</url-pattern>
        </servlet-mapping>
    </servlet>
    </web-app>
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
                       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  <bean id="bayeuxServer" class="org.cometd.server.BayeuxServerImpl" init-method="start" destroy-method="stop">
        <property name="options">
            <map>
                <entry key="javax.servlet.ServletContext" value-ref="servletContext" />
                <entry key="ws.cometdURLMapping" value="/cometd/*" />
                <entry key="logLevel" value="0" />
                <entry key="timeout" value="15000" />
            </map>
        </property>
        <property name="transports">
            <list>
                <bean id="websocketTransport" class="org.cometd.websocket.server.WebSocketTransport">
                    <constructor-arg ref="bayeuxServer" />
                </bean>
            </list>
        </property>
    </bean>
</beans>

The exception that I'm getting is the following:
java.lang.IllegalArgumentException: Missing WebSocket ServerContainer
    at org
.cometd.websocket.server.WebSocketTransport.init(WebSocketTransport.java:81)
    at org
.cometd.server.BayeuxServerImpl.initializeServerTransports(BayeuxServerImpl.java:260)
    at org
.cometd.server.BayeuxServerImpl.doStart(BayeuxServerImpl.java:122)
    at org
.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at sun
.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java
.lang.reflect.Method.invoke(Method.java:606)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org
.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org
.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org
.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org
.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org
.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)
    at org
.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1387)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org
.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org
.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org
.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org
.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org
.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org
.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
    at org
.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org
.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org
.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at org
.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at org
.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at com
.app.gui.web.appContextLoaderListener.contextInitialized(appContextLoaderListener.java:25)
    at org
.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:788)
    at org
.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:434)
    at org
.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:780)
    at org
.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:284)
    at org
.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1322)
    at org
.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732)
    at org
.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490)
    at org
.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at org
.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
    at org
.eclipse.jetty.server.Server.start(Server.java:342)
    at org
.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
    at org
.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
    at org
.eclipse.jetty.server.Server.doStart(Server.java:290)
    at org
.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
    at com
.app.jetty.AppJettyServer.main(appJettyServer.java:189)


Simone Bordet

unread,
Oct 29, 2015, 10:44:58 AM10/29/15
to cometd-users
Hi,

On Thu, Oct 29, 2015 at 2:00 PM, Diego Gliosca <diego....@gmail.com> wrote:
> I'm experiencing a problem trying to enable WebSockets on CometD. My
> configuration is the following:
> - CometD 3.0.5
> - Jetty 9.0.6,
> - SpringMVC 3.2.4

See answer in StackOverflow:
http://stackoverflow.com/questions/33391879/how-can-i-fix-missing-websocket-servercontainer-enabling-websockets-with-cometd/33417362#33417362

--
Simone Bordet
----
http://cometd.org
http://webtide.com
Developer advice, training, services and support
from the Jetty & CometD experts.

jayamali jayawardana

unread,
Nov 12, 2015, 9:52:01 AM11/12/15
to cometd-users
I am also facing this issue."Missing WebSocket ServerContainer
i am using - CometD 3.0.6
- Jetty 9.2.13
ServleteContext has not set a Servlet Container.Please help me to resolve this
...

Simone Bordet

unread,
Nov 14, 2015, 10:31:21 AM11/14/15
to cometd-users
Hi,

On Thu, Nov 12, 2015 at 3:49 PM, jayamali jayawardana
<jayamal...@gmail.com> wrote:
> I am also facing this issue."Missing WebSocket ServerContainer"
> i am using - CometD 3.0.6
> - Jetty 9.2.13
> ServleteContext has not set a Servlet Container.Please help me to resolve
> this

You probably do not have the right dependencies in your web application.
Please refer to this section for the dependencies:
http://docs.cometd.org/reference/#_java_server_transports

Also, please use CometD archetypes like explained in the StackOverflow answer.
The archetypes will build the right skeleton of the application for
you, and will go straight into development rather than trying to
assemble the application yourself and then stumble into problems.
Reply all
Reply to author
Forward
0 new messages