2013-03-13 83 views
3

我的耳朵應用程序工作正常。但是突然間,它開始在某些方法調用中拋出javax.ejb.EJBException,而不是返回原始的Application Exception(用@ApplicationException(rollback = true)註釋。現在原始應用程序異常被包裝在EJBException中。這個應用程序異常和ejb遠程接口在一個單獨的jar文件中,它被部署爲weblogic中的一個共享庫。javax.ejb.EJBException中的Weblogic包裝應用程序異常

我想知道拋出這個EJBException而不是拋出應用程序異常負責什麼,我認爲可能是@ApplicationException註釋沒有被weblogic正確檢測到,有誰能幫我解決這個問題嗎?

+0

註釋應該按照您描述的方式工作。我同意由於某種原因,註釋未被檢測到。最近變了什麼? – 2013-03-16 20:12:10

+0

@bkail謝謝。我找到了問題的原因,並將其作爲答案發布在此處。 – 2013-04-01 17:44:56

+0

這是很好的信息。 – 2013-04-02 14:29:37

回答

5

我能夠通過在ejb方法簽名的「throw」子句中添加應用程序異常來解決該問題。

以前所有的ejb類和應用程序異常類都在同一個jar文件中。但稍後,應用程序異常類和ejb遠程接口被放到另一個名爲「api」jar文件的jar文件中,並且相關的ejb文件保存在之前的jar文件中。

如果我們需要將所有類都放在同一個jar文件中時將其視爲應用程序excite,那麼似乎用@ApplicationException聲明應用程序異常就足夠了。但是,如果應用程序異常類位於單獨的jar文件中,那麼我們需要在ejb方法簽名的「throw」子句中添加此應用程序異常,以便將其解釋爲weblogic服務器的應用程序異常。