我是春季靴子的新手。我对Spring mvc有所了解。我已经使用一个@RestController开发了一个小应用程序,如下面的更新中所述。当我使用mvn spring-boot:run
(即嵌入式tomcat)
当我将打包的war部署到tomcat时,相同的REST调用会导致404 not found
。目标网址
http://localhost:8086/myapp/demo给出了404。
我创建了log4j2.xml
,当我使用嵌入式tomcat执行时,它会创建预期的日志文件,但是使用外部tomcat部署它也不会创建日志文件而且我找不到任何日志在<tomcat-dir>/logs
我在这里缺少什么?
更新:
spring boot入口点类:
@SpringBootApplication
@RestController
public class App extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
return application.sources(App.class);
}
@RequestMapping("/demo")
public String demo() {
return "Helloo.. !!";
}
}
Spring boot version =&gt; v1.3.2.RELEASE
部署到tcServer时的日志
INFO: Deploying web application archive C:\Users\a\vfabric-tc-server\vm1\webapps\myapp.war
Sep 12, 2016 5:07:23 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Users\a\vfabric-tc-server\vm1\webapps\myapp\WEB-INF\lib\tomcat-embed-el-8.0.30.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
Sep 12, 2016 5:07:24 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Sep 12, 2016 5:07:24 PM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration$JerseyWebApplicationInitializer@47b35d]
Sep 12, 2016 5:07:24 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive C:\Users\a\vfabric-tc-server\vm1\webapps\myapp.war has finished in 1,913 ms
UPDATE1: 我删除了Angular,只保留了spring boot @restcontroller。问题仍然存在。
答案 0 :(得分:0)
您是否可以将Tomcat嵌入式服务器的范围更改为POM文件中的“提供”或部署到非嵌入式Tomcat容器中,最好排除JAR(因此将其注释掉也是一个不错的选择)。
我遇到了与Spring BOOT的旧v1.3.x类似的问题。我没有在新版本中观察到这一点,即v1.4.0。
我假设您在项目POM中使用Spring BOOT父POM和“spring-boot-starter”lib。
答案 1 :(得分:0)
这是指向JDK6
的目标外部Tomcat服务器的问题,但我的应用程序是使用jdk7
构建的。
一旦我将外部Tomcat指向jdk7
,问题就解决了。