背景描述:
使用 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 的環境都沒有初始化成功
當然就卡住了