從Jboss4.0.2遷移到Jboss5.1.0

來源:互聯網
上載者:User

最近幹了一件吃力的事情, 把以前的EJB2.x應用從Jboss4遷移到Jboss5.

 

剛開始, 流年不利啊, 部署到Jboss5上後奇奇怪怪的問題不斷, 就查Jboss的文檔, 從WWW.Jboss.org找了一份Jboss5的"administrator and configuration guide", 開啟一看, 書中寫到"The primary focus of this book is the presentation of the standard JBoss 4.2
architecture components ....
", 唉, 不曉的是不是因為希望大家買它的服務的緣故, 文檔都不更新很久了.

 

只好自己找資料, 看原始碼(打算來著), 現在把遇到的問題記錄如下, 以後再有這種活, 也可參考一下:

 

1. 將原來的部署檔案app-deploy.xml放到Jboss deploy目錄下, 4可以正確部署, 5毫無反應

    應該是Jboss的部署器修改了檔案名稱規則, 從原始碼上看, 好像會部署"*-service.xml", "*-jboss-beans.xml".

    不過我沒有改檔案名稱, 因為這次要部署的不多, 我改的jboss-service.xml

 

2. 開始部署後, 拋異常, 說 xxxx name not bound.

   有兩個原因都可能導致這個問題:

   一個是depandens 沒有寫對. EJB2.x的部署器應該是EJBDeployer, 如果depandens沒有寫對的話, 在EJBDeployer載入前就部署, 會被SARDeployer部署, 這個時候jar裡的東西實際上沒有被部署.

   增加了Depandens後可以解決這種問題

 

   第二個是Jboss.xml沒寫對.導致jar包部署失敗. 這種情況會有一個伴生的異常: ClassCastException

 

3. 奇怪的ClassCastException

   列印訊息 "Can not cast JbossEJBEntityBean to class JbossEJBSessionBean"

   原來是Jboss.xml裡寫錯了.

   在Jboss4 中, 不論EntityBean還是SessionBean, 都可以寫成<sesseion>...., Jboss可以成功載入

   在Jboss5中, 如果實際上是一個EntityBean, 但是繼續在Jboss.xml裡寫session的話, 就會觸發這個異常, 然後, 相關Bean的JDNI name自然是not bounded

   這個確實是之前項目的設定檔沒有做規範, 不過就是提示資訊有些摸不著頭腦, 壓根沒提是在處理Jboss.xml時出的錯, 我在ejb-jar.xml裡上上下下查了一個多星期, 也沒想通哪裡讓Jboss認為那是個SessionBean的.

 

4. XML校正異常, 顯示資訊 "Element <session> must match (description?, ..." 啥的

   原因是, 在Jboss4裡, 校正DTD的時候, 是校正是否只包含指定的子項目,子項目的個數是否滿足DTD的定義等等.

   在Jboss5裡, 載入EJB2.x的設定檔時, 會校正DTD, 除了4裡要校正的內容外, 還校正子項目出現的順序是否和DTD裡定義的一致!

   說實話, 我不能理解這種校正的必要性, 不過受制於人, 他要這樣校正,就只好改ejb-jar.xml了, 對照DTD的順序, 把子項目移動一下就好了.

 

5. deploy depadencs fail ....due to EJBTimerService.... should be start but .... current stat is Configured.

   這個錯誤我覺得最不可理解了.

   在部署EJB2.x的時候, 使用的是EJBDeployer, 而且在conf/bootstrap/deployers.xml中, 已經指明了EJBDeployer會依賴EJBTimerService, 但是在實際部署過程中, 卻是沒有在EJBTimerService啟動之前就開始部署EJB2.x的東東了. 等EJBTimerService啟動完了, 異常已經拋出來了.

   只好手動在添加對EJBTimerService的依賴, 問題解決.

 

大概找了2個星期才解決了遷移的問題, 我剛開始用Jboss, 估計有些解決方案只是碰巧, 可能不對, 希望看到錯誤的同學能指點指點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.