我有一个Spring Boot应用程序运行Kafka和JPA。我想添加一个管理页面&所以首先添加" spring-boot-starter-web"并添加Controller类。但是,当我启动我的应用程序时,我可以看到Tomcat服务器已启动并且dispatcherServlet已初始化。
2018-04-13 18:25:29.495 INFO 5512 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$f5f4a697] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-04-13 18:25:30.584 INFO 5512 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2018-04-13 18:25:30.604 INFO 5512 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-04-13 18:25:30.607 INFO 5512 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.27
2018-04-13 18:25:33.052 INFO 5512 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : 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.
2018-04-13 18:25:33.384 INFO 5512 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-04-13 18:25:33.384 DEBUG 5512 --- [ost-startStop-1] o.s.web.context.ContextLoader : Published root WebApplicationContext as ServletContext attribute with name [org.springframework.web.context.WebApplicationContext.ROOT]
2018-04-13 18:25:33.385 INFO 5512 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization comp
leted in 6776 ms
2018-04-13 18:25:33.761 INFO 5512 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2018-04-13 18:25:33.768 INFO 5512 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'metricsFilter' to: [/*]
但是我看不到Controller类被handlerMapping映射。调用http://localhost:8080只会给我一个服务器不可用的错误。
我该如何调试?我已经检查了以下内容:
有没有办法找出MVC没有将Controller类添加到URL映射的原因?
我不能共享代码,因为它不公开。感谢您对此进行调查。
答案 0 :(得分:1)
有没有办法找出MVC没有将Controller类添加到URL映射的原因?
总是很难找出为什么不正在发生的事情(除非它阻止启动),但是Tomcat中的一个配置项可能会派上用场调试这个问题:
设置logEffectiveWebXml="true"
on your context并在日志中查看有效的web.xml - 从那里您应该能够识别处理的网址是否有线,或者是否过载或以其他方式被抢占。
答案 1 :(得分:1)
此问题已解决。我发现我无法访问Actuator或任何映射的URL。我一直看到一个"页面不可用"来自浏览器的错误(不是404)。
这是因为ApplicationContext仍在加载。应用程序上下文正在等待bean初始化,这需要很长时间才能从数据库加载hashmap。因此,上下文尚未准备好为映射的URL提供请求。
我在日志中看到Tomcat服务器启动消息时感到困惑。那只是服务器。当我访问URL时,Web应用程序上下文没有准备好。
删除慢速bean后,我可以访问这些URL。感谢所有的投入。