2011-04-08

共用EJB - Remote JNDI 篇

先前寫了 Remote篇, 就開始把 EJB 都作成 EJB3 Module 方式去 deploy 在 Jboss Server上面. 經過一段時間的驗正, 都還蠻順利的. 不過, 還是出問題了.
先前把一堆共用的 java class 放在同一個 jar 中, 讓其他 EJB 共用這一個 jar.  就出現一個怪問題了,  EJB_A 包涵 jar , EJB_B 也包涵 jar. 先將 EJB_A deploy上去成功, 在 將 EJB_B deploy 時就會出現 duplicat class 的Exception. 反過來, EJB_B 先放, 在放 EJB_A 就不會出現問題. 但是系統是會越來越大的, 不會只有兩個 EJB . 所以, 問題是要解決的.
所以想到的方式是, 是不是 可以透過 ear 包裝方式, 解決這一個問題.  但是, 之前用ear deploy 在 JNDI Tree 中, 都會出現 ear project name . 這樣還是沒辦法解決最原始的問題 , 就是要透過 JNDI Name  找出相關的 service 來用壓.
就在看著 source code時,  噹噹靈感來了. 在原來的code 中.
@Stateless(name = "edi/service/Workflow")
就想說試試看 多一定義 會不會有不一樣. 把 code 改成
@Stateless(name = "edi/service/Workflow", mappedName="/edi/service/Workflow"

實驗出爐....
這樣改比原來的還要好, 在 JNDI Tree 中 直接出現 edi/service/Workflow . 不用像之前的版本一樣在多加一個 remote. 所以這樣的方法會比較好, 可以避免多重問題.

沒有留言:

張貼留言