Not running on Jetty, JSR-356 support unavailable分析与解决
应用部署后,启动时报错
无论是在WAS、Liberty或Tomcat等其他应用服务器上面碰到如上错误时,原因是
应用中的websocket包与应用服务器自身带的实现冲突了。
比如,pom.xml中的项目依赖:
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-websocket</artifactid>
</dependency>
解决方法:
在打包时将 websocket-*.jar 包排除在外即可。
在pom.xml中可以进行排除
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-war-plugin</artifactid>
<configuration>
<packagingexcludes>WEB-INF/lib/websocket-*.jar</packagingexcludes>
</configuration>
</plugin>
然后,重新构建打包部署。
代码:
[org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer@d3a9b786] ServletContainerInitializer(位于以下应用程序 [portal-app] 中)在调用 onStartup 方法时发生了以下错误:[javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable at org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.onStartup(WebSocketServerContainerInitializer.java:183)
应用中的websocket包与应用服务器自身带的实现冲突了。
比如,pom.xml中的项目依赖:
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-websocket</artifactid>
</dependency>
解决方法:
在打包时将 websocket-*.jar 包排除在外即可。
在pom.xml中可以进行排除
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-war-plugin</artifactid>
<configuration>
<packagingexcludes>WEB-INF/lib/websocket-*.jar</packagingexcludes>
</configuration>
</plugin>
然后,重新构建打包部署。