Tomcat 7挂起初始化Spring根WebApplicationContext

dluptydi  于 2024-01-05  发布在  Spring
关注(0)|答案(4)|浏览(141)

我试图将Spring Web应用程序部署到Tomcat 7.0.24,但它在启动时挂起,最后一行显示为

  1. INFO: Deploying web application archive /usr/local/apps/tomcat-7.0.42/webapps/server-webapp.war
  2. Apr 4, 2014 1:38:28 PM org.apache.catalina.core.ApplicationContext log
  3. INFO: Spring WebApplicationInitializers detected on classpath: [com.verical.marketplace.init.MarketplaceWebAppInitializer@6a05fdf]
  4. Apr 4, 2014 1:38:30 PM org.apache.catalina.core.ApplicationContext log
  5. INFO: Initializing Spring root WebApplicationContext

字符串
我最近升级到Spring 4.0.2,并通过注解使用客户WebApplicationInitializer。在升级之前,我使用Spring 3和纯XML配置,它工作得很好。我的web.xml文件看起来像这样:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
  7. http://java.sun.com/xml/ns/javaee/web-common_3_0.xsd"
  8. version="3.0">
  9. <!-- Define the mime mappings -->
  10. <mime-mapping>
  11. <extension>xsd</extension>
  12. <mime-type>text/xml</mime-type>
  13. </mime-mapping>
  14. <!-- Define the welcome file list -->
  15. <welcome-file-list>
  16. <welcome-file>index.jsp</welcome-file>
  17. </welcome-file-list>
  18. <!-- Define the default session timeout value -->
  19. <session-config>
  20. <session-timeout>240</session-timeout>
  21. <cookie-config>
  22. <http-only>true</http-only>
  23. <secure>true</secure>
  24. </cookie-config>
  25. </session-config>


下面是我的Web应用初始化器:

  1. public class MarketplaceWebAppInitializer implements WebApplicationInitializer
  2. {
  3. @Override
  4. public void onStartup(ServletContext container)
  5. {
  6. // Instantiate a new web application context
  7. XmlWebApplicationContext rootContext = new MarketplaceXmlWebApplicationContext(container);
  8. // Add the various listeners
  9. container.addListener(new ContextLoaderListener(rootContext));
  10. container.addListener(new RequestContextListener());
  11. // Set the locations of the configuration files
  12. rootContext.setConfigLocations(
  13. new String[]
  14. {
  15. "applicationContext.xml",
  16. "config/api-beans.xml",
  17. "config/hibernate-beans.xml",
  18. "config/security-beans.xml",
  19. "config/service-beans.xml",
  20. "config/settings-beans.xml",
  21. "config/utility-beans.xml",
  22. "config/mvc/web-beans.xml",
  23. "config/jmx-beans.xml",
  24. "config/ws/ws-beans.xml"
  25. }
  26. );
  27. // Add the dispatcher servlet
  28. ServletRegistration.Dynamic mvc =
  29. container.addServlet("mvc", new DispatcherServlet(rootContext));
  30. mvc.setLoadOnStartup(1);
  31. mvc.setInitParameter("dispatchOptionsRequest", "true");
  32. mvc.addMapping("/api/*");
  33. mvc.addMapping("/html/*");
  34. // Add the web services servlet
  35. ServletRegistration.Dynamic ws =
  36. container.addServlet("ws", new MessageDispatcherServlet(rootContext));
  37. ws.setLoadOnStartup(2);
  38. ws.setInitParameter("transformWsdlLocations", "true");
  39. ws.addMapping("/service/*");
  40. // Add the spring security filter
  41. FilterRegistration.Dynamic springSecurityFilter =
  42. container.addFilter("springSecurityFilterChain",
  43. new DelegatingFilterProxy("springSecurityFilterChain"));
  44. springSecurityFilter.addMappingForUrlPatterns(null, true, "/j_spring_security_check");
  45. springSecurityFilter.addMappingForUrlPatterns(null, true, "/j_spring_security_logout");
  46. springSecurityFilter.addMappingForUrlPatterns(null, true, "/api/*");
  47. springSecurityFilter.addMappingForUrlPatterns(null, true, "/html/*");
  48. // Add the static content filter
  49. FilterRegistration.Dynamic staticContentFilter =
  50. container.addFilter("staticContentFilter", new StaticContentFilter());
  51. staticContentFilter.addMappingForUrlPatterns(null, true, "/static/*");
  52. staticContentFilter.addMappingForUrlPatterns(null, true, "/generated/*");
  53. // Add the logger filter
  54. FilterRegistration.Dynamic loggerFilter =
  55. container.addFilter("loggerFilter", new LoggerFilter());
  56. loggerFilter.addMappingForUrlPatterns(null, true, "/api/*");
  57. loggerFilter.addMappingForUrlPatterns(null, true, "/html/*");
  58. }
  59. }


有什么明显的我错过了吗?我已经检查了关于这个主题的所有其他问题/答案,没有找到解决方案。

vwhgwdsa

vwhgwdsa1#

为此设置一个答案,以便其他人知道在这种特定情况下是什么帮助了我。打开Spring日志记录允许我看到数据库连接处于挂起状态。解决数据库问题允许我的应用程序完成部署。

hi3rlvi2

hi3rlvi22#

我已经想了很久了。
主机卡在INFO: Initializing Spring DispatcherServlet 'dispatcherServlet'
原来那是最后一条消息,服务已经启动了。我在错误的端口上访问了服务。
另外,没有配置日志记录。所以在spring的默认输出之后没有日志显示。

wribegjk

wribegjk3#

正如我检查我有同样的问题,如 *Jive应用程序 * 启动卡住,我的机器设计为:

配置2节点与DB一样,我有 eae,ingress-replicator和搜索**节点1 和 * 节点2有缓存,docconverter。然后两个前端节点
***解决方案:检查操作系统升级后某些服务卡住,因此***我已按顺序重新启动所有4个节点,问题已解决。

3pvhb19x

3pvhb19x4#

有时也可能是一种奇怪的情况,即您丢失了所有先前的日志记录,这是您看到的唯一剩余输出,但应用程序正在运行。请验证当您尝试调用应用程序时会发生什么。
对我来说,以前的SFL4J输出,我习惯了突然改变了配置的变化,我在控制台上的最后输出行是

  1. Initializing Spring embedded WebApplicationContext

字符串
但是应用程序正在运行。我只是不再看到所有其他日志记录,这些日志记录通常以

  1. 2023-12-06 10:58:29.837 [main] INFO MyApplication.logStarted(56) - Started MyApplication in 5.988 seconds (process running for 6.94)

相关问题