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

时间:2015-01-22 12:44:26

标签: java maven spring-mvc tomcat spring-boot

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

我进行了Converting a Spring Boot JAR Application to a WAR using MavenSpring Boot Docs中指定的更改。

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

非常感谢任何帮助。

更新:

以下是我的日志:

Netbeans的:

  

NetBeans:在Apache Tomcat 8.0.17上部署       个人资料模式:false       调试模式:false       force redeploy:true

     

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

     

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

     

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

     

确定 - 在上下文路径/ 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 ms

在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"/>

我已尝试访问

  1. http://localhost:8080/sophia/users
  2. http://localhost:8080/sophia-server-1.0.0-SNAPSHOT/users(战争名称)
  3. 第一个返回404但是使用来自我的CORS过滤器bean的CORS信息。第二个返回404没有CORS信息(表示应用程序已启动并已配置但我似乎无法访问控制器)。

4 个答案:

答案 0 :(得分:18)

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

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

第二个是DispatcherServlet的{​​{1}}的servlet映射。{/ 1}。

第三个是/sohpia/*内的控制器映射,在您的示例中为DispatcherServlet

所有这些组合在一起创建了网址/users

作为WAR的部署之间的区别在于您包含了一个单独的URL来部署,当作为jar运行时,默认情况下,它部署到/sophia/sophia/users(根)。

您可以将/作为/sophia添加server.context-path并将application.properties映射到DispatcherServlet/*来解决问题。这将在两种情况下为您提供您想要的URL(和预期的)。

答案 1 :(得分:6)

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

答案 2 :(得分:0)

您是否尝试过扩展Sp​​ringBootServletInitializer并覆盖configure方法?如上所述here

与将应用程序作为容器内的war文件运行相比,jar文件的入口点与[Main Class]不同。

希望这有帮助。

答案 3 :(得分:0)

检查java版本

pom.xml 中存在的版本必须与服务器上安装的版本相同

openjdk 11 对我来说很好

https://adoptopenjdk.net/