先前把一堆共用的 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. 所以這樣的方法會比較好, 可以避免多重問題.
沒有留言:
張貼留言