Java Can';t使用Tomcat和Maven'启动WebSocket容器;s tomcat7 websocket插件

Java Can';t使用Tomcat和Maven'启动WebSocket容器;s tomcat7 websocket插件,java,maven,tomcat,websocket,tomcat7,Java,Maven,Tomcat,Websocket,Tomcat7,我正在尝试使用Tomcat服务器(7.0.54)来支持WebSocket,但在部署它时遇到了困难。我有一个简单的端点: @ServerEndpoint(value=“/test”) 公共类测试点{ 为了处理此端点,我需要包含一个容器(使用ServiceLoader启动、使用端点注释内省所有类等)。我使用以下方法: org.apache.tomcat tomcat7 websocket 7.0.47 但是,mvn tomcat7:run则无法从以下内容开始: 严重:jndi:/localho

我正在尝试使用Tomcat服务器(7.0.54)来支持WebSocket,但在部署它时遇到了困难。我有一个简单的端点:

@ServerEndpoint(value=“/test”)
公共类测试点{

为了处理此端点,我需要包含一个容器(使用ServiceLoader启动、使用端点注释内省所有类等)。我使用以下方法:


org.apache.tomcat
tomcat7 websocket
7.0.47

但是,
mvn tomcat7:run
则无法从以下内容开始:

严重:jndi:/localhost/web-INF/web.xml处的应用程序web.xml文件中存在解析错误
org.xml.sax.SAXParseException;systemId:jndi:/localhost/WEB-INF/WEB.xml;行号:13;列号:12;错误位于(13,12):org.apache.catalina.deploy.WebXml addFilter

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


org.apache.tomcat
tomcat7 websocket
7.0.47
系统
${somewhere}/tomcat7-websocket-7.0.54.jar

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


如何正确启动WebSocket容器?

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

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

javax.websocket
javax.websocket-api
1
假如

成功了,除了我必须将作用域添加到org.apache.tomcat:tomcat7 websocket,这就是我正在使用的。谢谢Olivier!