网络套接字客户端不能在Tomcat工作

问题描述:

我想在Tomcat的上下文中运行Web套接字客户端。所以情况是,我在Tomcat上部署了一个Websocket服务器端点,作为App-1的一部分。也部署在Tomcat上的App-2(显然是在不同的上下文根目录下)想要发送消息。网络套接字客户端不能在Tomcat工作

如果我将它作为独立的主方法运行,App-2中的类可以正常工作。但是当它在tomcat的上下文中运行时,它会给出下面的错误。 (我用泰鲁斯 - 1.9作为JSR-356 IMPL)

java.util.ServiceConfigurationError: javax.websocket.ContainerProvider: Provider org.apache.tomcat.websocket.WsContainerProvider not a subtype 
at java.util.ServiceLoader.fail(ServiceLoader.java:239) 
at java.util.ServiceLoader.access$300(ServiceLoader.java:185) 
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376) 
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) 
at java.util.ServiceLoader$1.next(ServiceLoader.java:480) 
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:66) 

上述异常被抛出这一行: WebSocketContainer container = ContainerProvider.getWebSocketContainer();

就如何解决这个任何建议将是非常有益的。

明白了。问题是,我包括Tyrus独立客户端来导入客户端软件包。 我这个

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
</dependency> 

它解决了问题,更换了下面

<dependency> 
    <groupId>org.glassfish.tyrus.bundles</groupId> 
    <artifactId>tyrus-standalone-client</artifactId> 
    <version>1.9</version> 
</dependency> 

,仅供参考:

在一个的Debian或Ubuntu配置中运行的Tomcat ,网页套接字罐不与标准安装Tomcat包装。 (见https://bugs.launchpad.net/ubuntu/+source/tomcat7/+bug/1326687

因此,为了解决这个问题:

  1. 包括在你的webapp WebSocket的罐子,这应该是来自Tomcat本身,否则将无法正常工作。在你的webapp lib文件夹中有一个重复的jar会阻止tomcat正常启动。
  2. 复制并在java/Tomcat安装文件夹链接2个的WebSocket罐子

    CP javax.websocket-API-1.1.jar的/ usr /共享/爪哇/

    LN -s .. /../java/javax.websocket-api-1.1.jar /usr/share/tomcat7/lib/javax.websocket-api-1.1.jar

    cp tomcat7-websocket.jar/usr/share/java/

    ln -s ../../java/tomcat7-websocket.jar /usr/share/tomcat7/lib/tomcat7-websocket.jar

您可以找到JAR文件:

https://mvnrepository.com/artifact/javax.websocket/javax.websocket-api

https://mvnrepository.com/artifact/org.apache.tomcat/tomcat7-websocket

这个问题是固定的我,当我从Tomcat 7切换到Tomcat 8。

我在Eclipse中通过服务器选项卡运行Web应用程序时遇到此问题。我在Tomcat 7上运行,下载了Tomcat 8并运行后,此问题消失了。