无法使用 Tomcat 和 Maven 的 tomcat7-websocket 插件启动 WebSocket 容器



我正在尝试获得一个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容器?

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

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

相关内容

  • 没有找到相关文章

最新更新