使用 jboss + Maven + Java Spring MVC 出現的bug...
狀況說明:
使用 eclipse搭配 Maven build 出 war 檔後
我在 jboss-eap-6.4 上佈署了兩個不同的 war 檔, 先佈署的是 a.war , 後面的是 b.war
第一個佈署的不會有問題, 但第二個會有
錯誤訊息:
這裡只列出重要的訊息....
Caused by: org.jboss.msc.service.DuplicateServiceException:
Service jboss.ws.endpoint.context
=xxxxx.\"com.aaa.bbb.cccImpl\"
is already registered"}}}}
分析:
首先找DuplicateServiceException定義:
參考:http://doc.javanb.com/jboss-3-2-7-varia-api/org/jboss/services/binding/DuplicateServiceException.html
意思是, 當 jboss 試圖重複增加一個已經被配置儲存並存在的 service, 這個 exception 會被拋出
檢查了下
a.war (第一個war) 佈署完時
會在jboss中某個資料夾出現與我的 war 同名資料夾,
底下會放 xxxxx.\"com.aaa.bbb.cccImpl\" 這個檔案
但b.war佈署完時不會出現,
又在亂槍打鳥 google 時在 jboss 的網站找到與我出現一樣exception 的範例 :
https://developer.jboss.org/thread/249844
在 b.war 裡找了下jboss-web.xml 這個檔案, 裡面果然 context-root 設成 a 了
怪不得 jboss 會去找 a 裡面的服務
改成 b 後就解決了
P.S 稍微喵了一下 JBoss 的官方文件真的是博大精深...有空的人可以在下面Red Hat 的官方網站研究
https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.2.beta/