2015-09-09 2 views
1

Я пытаюсь запустить приложение Spring Boot на Tomcat 7. По моему мнению, он должен быть совместим с сервлетом 3.0 spec.Spring Boot Servlet API Version

В моей зависимости, я отмечаю кот, как это предусмотрено:

<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> 

Edit: И я добавил свойство <tomcat.version>7.0.59</tomcat.version>

Но я до сих пор не могу запустить его в котом. Я получаю эту ошибку:

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

Это потому, что она, по-видимому, нуждается в спецификации сервлетов 3.1.

Я что-то упустил?

ответ

1

Проблема заключается в том, что пружинная загрузка также настраивает поддержку websocket на spring-boot-starter-tomcat, которая включает в себя весеннюю загрузку-стартер-сеть. И в соответствии с Apache, вы должны использовать Java 7, если вы хотите веб-сокетов с Tomcat 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> 
Смежные вопросы