1

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

App-2 中的类工作正常,如果我将它作为一个独立的主方法运行。但是当它在tomcat的上下文中运行时,它会给出以下错误。(我使用 Tyrus 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();

有关如何解决此问题的任何建议都将非常有帮助。

4

3 回答 3

1

知道了。问题是,我包括 tyrus 独立客户端来导入客户端包。我替换了下面的

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

有了这个

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

它解决了这个问题。

于 2015-11-04T06:34:37.657 回答
0

当我从 Tomcat 7 切换到 Tomcat 8 时,此问题已为我解决。

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

于 2017-06-27T18:41:36.313 回答
0

仅供参考:

在运行tomcat 7的Debian 或 Ubuntu配置上,Websocket jar 不与 Tomcat 的标准安装一起打包。(见https://bugs.launchpad.net/ubuntu/+source/tomcat7/+bug/1326687

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

  1. 不要在的 webapp 中包含 websocket jar,这应该来自 tomcat 本身,否则它将无法工作。在您的 webapp lib 文件夹中有一个重复的 jar 将阻止 tomcat 正常启动。
  2. 复制并链接 java/tomcat 安装文件夹中的 2 个 websocket jar

    cp javax.websocket-api-1.1.jar /usr/share/java/

    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

于 2017-01-11T20:23:29.597 回答