2011-12-04 81 views
1

這是一個奇怪的情況。讓我盡我所能解釋它。將EJB3移植到EJB2

我有一個接口Client其中有引發自定義異常的方法。 我的EJB3 Remote擴展了此接口Client並註釋了@Remote。 用於擴展遠程的我的EJB3 Bean被標註爲@Stateless

現在來了怪異。由於一個非常特殊的問題,我無法在我的應用程序服務器上部署任何EJB3 jar。 (問題不在於我如何解決此部署問題。)

現在我必須將代碼從EJB3降級到EJB2。 由於我的遠程接口中的所有方法都必須拋出RemoteException(EJB2規範),所以我不能再從我的Client接口擴展。

我留下的選項是創建一個EJB2Wrapper,它可以從Client接口和我調用到遠程接口的每種方法中擴展而來。

這會爲每種方法創建醜陋的try catch塊,因爲我必須趕上RemoteException

有沒有更好的方式來做到這一點?

回答

1

回答我自己的問題以關閉循環。

現在沒有更好的方法來做到這一點。

2

我會說,如果你的bean中的功能起源於POJO,你就不會有這麼大的問題。如果你有這些,你可以簡單地部署爲EJB3,EJB2,servlet,Web服務或其他你想要的東西。

也許最好的解決方案是將EJB3中的商品作爲POJO抽取出來,並將部署選擇推遲到最後。我寧願這個解決方案的EJB2Wrapper。你已經必須做一些工作;最好是投資於即使您決定將來使用REST Web服務而不是EJB也會有價值的內容。