【问题标题】:javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailablejavax.servlet.ServletException:未在 Jetty 上运行,JSR-356 支持不可用
【发布时间】:2015-11-19 01:26:02
【问题描述】:

我在向 tomcat 实例部署战争时遇到问题,

Tomcat 版本详情,

D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63\bin>version.bat
Using CATALINA_BASE:   "D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63"
Using CATALINA_HOME:   "D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63"
Using CATALINA_TMPDIR: "D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.7.0_07"
Using CLASSPATH:       "D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63\bin\bootstrap.jar;D:\Kiran\Kiran\Softwares DH\Webservers\apache-to
mcat-7.0.63\bin\tomcat-juli.jar"
Server version: Apache Tomcat/7.0.63
Server built:   Jun 30 2015 08:08:33 UTC
Server number:  7.0.63.0
OS Name:        Windows 7
OS Version:     6.1
Architecture:   amd64
JVM Version:    1.7.0_07-b11
JVM Vendor:     Oracle Corporation
D:\Kiran\Kiran\Softwares DH\Webservers\apache-tomcat-7.0.63\bin>

POM 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

我使用 maven 插件创建了一个战争并尝试在 tomcat 7 上部署。我能够部署但无法启动 webapp。当我找到它的日志时,它给出了下面的堆栈跟踪,

SEVERE: Error during ServletContainerInitializer processing
javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable
    at org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.onStartup(WebSocketServerContainerInitializer.java:146)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5520)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1322)
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:694)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:217)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

任何帮助将不胜感激。 谢谢。


编辑:

当我使用 STS 运行应用程序时它运行良好

【问题讨论】:

  • Tomcat 7 是否支持 JSR-356?
  • 据此link。是的,tomcat 7 支持 JSR 356
  • @Kayaman 请检查答案。我已经更新了。

标签: java spring tomcat spring-websocket


【解决方案1】:

在 pom.xml 中搜索

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

并删除它。

【讨论】:

  • @kryger - 我已经从我的依赖项中删除了 spring-boot-starter-jetty,但它仍然无法正常工作,下面是我的 tomcat 详细信息 服务器版本:Apache Tomcat/9.0.33 服务器构建:Mar 2020 年 11 月 09:31:38 UTC 服务器编号:9.0.33.0 操作系统名称:Windows 10 操作系统版本:10.0 架构:amd64 JVM 版本:1.8.0_151-b12 JVM 供应商:Oracle Corporation
【解决方案2】:

问题被确定为tomcat的websocket jars和我的应用程序jars的混淆。我已将其从 war 文件中删除并开始工作,

我使用maven插件来删除罐子,如下所示,

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <packagingExcludes>WEB-INF/lib/websocket-*.jar</packagingExcludes>
    </configuration>
</plugin>

造成问题的罐子是,

【讨论】:

    【解决方案3】:

    正如 Kiran 在另一个答案中已经提到的,有问题的库是 websocket-*.jar(s)。我在项目中遇到了由(升级)Active MQ 库引入的这些依赖项。 所以如果你有同样的错误,在你的项目中寻找maven依赖树并排除依赖:

    mvn dependency:tree -Dverbose -Dincludes=javax.websocket  
    

    【讨论】:

      猜你喜欢
      • 2018-08-19
      • 2017-07-20
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      相关资源
      最近更新 更多