在Tomcat中部署的Spring Boot提供了404但是可以独立运行

xel*_*ell 13 java tomcat spring-mvc maven spring-boot

我已经用嵌入式Tomcat测试Spring Boot大约一个月了,用于构建REST API.一切都很好.我们现在希望在单独的开发环境中部署API,该环境中有一些在Tomcat容器上运行的其他(非Spring)应用程序.

使用MavenSpring Boot Docs 将使用Spring Boot JAR应用程序转换为WAR中指定的更改.

部署顺利(日志很好,没有错误),看着Tomcat管理我看到我的应用程序已部署.但是,当我尝试在curl中访问http:// localhost:8080/sophia/users时,我得到404.

任何帮助深表感谢.

更新:

这是我的日志:

Netbeans的:

NetBeans:在Apache Tomcat 8.0.17配置文件模式下部署:false debug mode:false force redeploy:true

在/home/bugz/workspace/pdcore/sophiaserver/target/sophia-server-1.0.0-SNAPSHOT进行就地部署

部署正在进行中......

部署?配置=文件%3A%2Ftmp%2Fcontext1845402702541504208.xml&路径= /蒿

OK - 在上下文路径/ sophia部署应用程序

开始正在进行中......

启动?路径= /索菲娅

确定 - 在上下文路径/ sophia启动应用程序

Tomcat的:

INFO 10:47:52:703 org.springframework.boot.context.embedded.ServletRegistrationBean - 将servlet:'dispatcherServlet'映射到[/ sophia/*]

INFO 10:47:54:042 org.springframework.boot.SpringApplication - 在8.285秒内启动应用程序(JVM运行12087.301)

2015年1月22日10:47:54.060 INFO [http-nio-8080-exec-99] org.apache.catalina.startup.HostConfig.deployDescriptor配置描述符/ home/bugz/workspace/server/apache-tomcat-的部署8.0.17/conf/Catalina/localhost/sophia.xml已于12,091毫秒完成

在用于Catalina localhost的sophia.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" docBase="/home/bugz/workspace/pdcore/sophiaserver/target/sophia-server-1.0.0-SNAPSHOT" path="/sophia"/>
Run Code Online (Sandbox Code Playgroud)

我试过访问

  1. HTTP://本地主机:8080 /索菲亚/用户
  2. http:// localhost:8080/sophia-server-1.0.0-SNAPSHOT/users(WAR的名称)

第一个返回404,但返回来自我的CORS过滤器bean的CORS信息.第二个返回404没有CORS信息(表示应用程序已启动并已配置但我似乎无法访问控制器).

M. *_*num 19

运行应用程序时,调用路径包含几个部分.

第一个是部署应用程序的基本URL,在您的情况下/sophia.

第二个是DispatcherServlet你的案例中的servlet映射/sohpia/*.

第三个是控制器内部的映射DispatcherServlet,在你的例子中是/users.

所有这些组合在一起创建了URL /sophia/sophia/users.

作为WAR的部署之间的区别在于您包含一个单独的URL以进行部署,当作为jar运行时,默认情况下将其部署到/(根).

您可以通过将/sophiaserver.context-path置于application.properties并映射DispatcherServlet/*或来修复它/.这将在两种情况下为您提供您想要(和预期)的URL.


jee*_*mar 6

check java -version意味着如果你在java 8中编译了war并且tomcat在java 7上运行则它不起作用.