【问题标题】:Can't start WebSocket container with Tomcat and Maven's tomcat7-websocket plug-in无法用Tomcat和Maven的tomcat7-websocket插件启动WebSocket容器
【发布时间】:2014-07-09 15:51:51
【问题描述】:

我正在尝试让 Tomcat 服务器 (7.0.54) 支持 WebSocket 并且很难部署它。我有一个简单的端点:

@ServerEndpoint(value = "/test") public class TestEndpoint {

为了处理这个端点,我需要包含一个容器(它使用 ServiceLoader 来启动,用端点注释自省所有类等......)。我使用以下内容:

<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat7-websocket</artifactId> <version>7.0.47</version> </dependency>

但是,mvn tomcat7:run 然后无法以:

SEVERE: Parse error in application web.xml file at jndi:/localhost/WEB-INF/web.xml org.xml.sax.SAXParseException; systemId: jndi:/localhost/WEB-INF/web.xml; lineNumber: 13; columnNumber: 12; Error at (13, 12) : org.apache.catalina.deploy.WebXml addFilter

如果相反,我将范围指定为system,并将其指向我的本地文件系统:

<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat7-websocket</artifactId> <version>7.0.47</version> <scope>system</scope> <systemPath>${somewhere}/tomcat7-websocket-7.0.54.jar</systemPath> </dependency>

...然后一切正常,但是当然,这不能可靠地部署在实时服务器上。

如何才能正确启动我的 WebSocket 容器?

【问题讨论】:

    标签: java maven tomcat websocket tomcat7


    【解决方案1】:

    您需要使用此依赖项并将其标记为已提供(而不是来自 org.apache.tomcat 的依赖项从未包含 tomcat 依赖项,因为它全部由容器提供)。这类似于servlet-api:

    <dependency>
      <groupId>javax.websocket</groupId>
      <artifactId>javax.websocket-api</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </dependency>
    

    【讨论】:

    • 做到了,除了我必须将范围添加到 org.apache.tomcat:tomcat7-websocket,这是我正在使用的。谢谢奥利维尔!
    猜你喜欢
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2014-05-30
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多