Initializing Spring root WebApplicationContext 耗費過長時間

 

 

背景描述:

使用 JBoss 佈署用 Maven 產生出來的 Java Spring 專案時

出現了以下訊息:

INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/gogogo]] (ServerService Thread Pool -- 60) Initializing Spring root WebApplicationContext

這個部分卡了很久了一段時間,接著跳出

 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) JBAS013413: Timeout after [5000] seconds waiting for service container stability while finalizing an operation. Process must be restarted. Step that first updated the service container was 'deploy' at address '[("deployment" => "gogogo.war")]'

 

原因分析:

重點在初始化 Spring root WebApplicationContext 的時候卡住

我找了 web.xml 觀察裡面的設定檔

確定用來生成 ContextLoader 的 ContextLoaderListener 的設定都在

( 前者會生成ApplicationContext 那些有的沒的設定檔 )

只是沒有 dispatcherServlet , 這一包是用來跑 webservice 有關的業務

 

後來我用  Initializing Spring root WebApplicationContext 再次 google 了下

找到了

參考: https://segmentfault.com/a/1190000013816079

JBoss 容器一直等 spring 那些設定檔, 一堆 bean 跟有的沒的初始化完成

我照著這個邏輯找了下發現設定檔中有用到 JMS 去連其他台  server

因為那一台 server 都沒有完成當然 Spring 的環境都沒有初始化成功

 當然就卡住了