首页 文章

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

提问于
浏览
11

我已经用嵌入式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部署中的就地部署正在进行中...部署?config = file%3A%2Ftmp%2Fcontext1845402702541504208.xml&path = / sophia OK - 在上下文路径/ sophia部署的应用程序开始正在进行中...... start?path = / sophia OK - 在上下文中启动应用程序路径/ 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"/>

我试过访问

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

3 回答

  • 6

    您是否尝试过扩展SpringBootServletInitializer并重写configure方法?如上所述here

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

    希望这可以帮助 .

  • 0

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

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

    第二个是 DispatcherServlet 的servlet映射,在你的情况下是 /sohpia/* .

    第三个是 DispatcherServlet 内部控制器的映射,例如 /users .

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

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

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

  • 18

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

相关问题