崩溃在Tomcat中部署Spring-Boot WAR

san*_*o21 2 java spring-mvc spring-boot

我设法用java -jar命令运行一个spring-boot web应用程序.但是当将打包字段更改为war(在pom.xml中)并将其构建为war时,它无法在tomcat 7中运行.

我将我的pom.xml的父级变为:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>0.5.0.M7</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

并且:

public class ApplicationWebXml extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

INFO: Deploying web application archive /home/ichsan/coding/java/tools/apache-tomcat-7.0.39/webapps/hello.war
Jan 4, 2014 10:18:50 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/ichsan/coding/java/tools/apache-tomcat-7.0.39/webapps/hello/WEB-INF/lib/tomcat-embed-core-7.0.47.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jan 4, 2014 10:18:50 PM org.apache.catalina.startup.ContextConfig getServletContainerInitializer
SEVERE: The ServletContentInitializer [org.apache.tomcat.websocket.server.WsSci] could not be created
java.lang.ClassNotFoundException: org.apache.tomcat.websocket.server.WsSci
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这里发生了什么以及如何克服这个问题?
  2. 使用弹簧靴是否真的安全?因为嵌入式服务器库似乎影响了它部署到j2ee容器的可靠性.我知道,它仍然是Milestone版本.

Jør*_*her 7

pom.xml使用以下行修改您的行:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这将确保在部署到服务器时,不会将嵌入式tomcat服务器提供给您的Web应用程序.