【问题标题】:Spring Boot Servlet API VersionSpring Boot Servlet API 版本
【发布时间】:2015-09-09 18:58:47
【问题描述】:

我正在尝试在 Tomcat 7 上运行 Spring Boot 应用程序。据我了解,它应该与 servlet 3.0 规范兼容。

在我的依赖项中,我将 tomcat 标记为已提供:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope> <!-- Mark as provided so it doesn't interfere when we deploy in container -->
</dependency>

编辑:我添加了属性&lt;tomcat.version&gt;7.0.59&lt;/tomcat.version&gt;

但我仍然无法在tomcat中启动它。我收到此错误:

原因:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
在 org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:147)
在 org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
在 org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)

这是因为它显然需要 servlet 规范 3.1。

我错过了什么吗?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    问题是spring-boot还在spring-boot-starter-tomcat上配置了websocket支持,spring-boot-starter-web包含了这个。根据 Apache,如果你想使用 Tomcat 7 的 web socket,你必须使用 Java 7。 这里:http://tomcat.apache.org/whichversion.html

    使用 Java 7 编译或排除 websocket 支持

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-websocket</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 2015-06-17
      • 2021-01-12
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多