你如何在Tomcat7上部署Spring Boot战争?

时间:2015-09-02 12:45:32

标签: java spring spring-mvc tomcat gradle

我有一个使用Gradle的Spring Boot Web MVC应用程序,可以使用bootRun运行良好。 Gradle还构建了战争(使用' gradle war'),我已将其复制到我的Tomcat服务器的webapps目录中,并在重新启动后将其解压缩到目录中。当我检查Tomcat管理器时,我看到它已注册,但我不知道如何使用浏览器实际连接它。在本地,我会访问我的索引页面http://localhost:8080/web/home。如果在服务器上我尝试http://localhost:8080/my-war-name甚至http://localhost:8080/my-war-name/web/home,我得到的只是一个Tomcat 404页面。基本的Tomcat和管理页面工作正常。

日志中也没有任何内容。它说的是它正在部署Web应用程序存档并且服务器已经启动。

我曾尝试查看有关SO和指南的各种问题,但我找不到一个简单的指南,告诉您如何将Spring Web应用程序部署到Tomcat。我从哪里开始研究发生了什么?

更新

正如我在评论中所述,我已将JVM切换到Oracle 1.8并使用gradle bootRepackage创建了战争。当我将战争复制到webapps时,我得到:

INFO: Spring WebApplicationInitializers detected on classpath: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration@60cf45c0, my.mvcapp.Application@7f2a62a2, my.mvcapp.config.ServletInitializer@1c71c071]
Sep 02, 2015 1:45:22 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring embedded WebApplicationContext

然后,当我尝试在Tomcat管理器中启动应用程序时,我得到:

...truncated for brevity...
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'tokenStore': Requested bean is currently in creation: Is there an unresolvable circular reference?
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:119)
    at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:110)
    at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:69)
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5456)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 27 more

更新2

所以为了好玩,我尝试使用Jetty 8,我得到的就是作为目录列出的战争内容。

我解除了自尝试Tomcat 7以来然后部署到Tomcat 8所做的所有更改。这加载了应用程序,我现在在输出中获得Spring横幅。但是,虽然检测到我的控制器,但它们似乎没有映射到URL。我知道这个问题是关于Tomcat 7的,所以我需要为此开一个新问题。我似乎无法使用Tomcat 7。

为什么这么难?我想要的只是提供完美运行嵌入式服务器的代码。某处必须有白痴指南。

0 个答案:

没有答案