2013-04-26 57 views
0

有沒有辦法更改Websphere 7應用程序服務器的默認EJBException處理?Websphere EjbException包裝

我們有啓動一個新事務的EJB:

@Stateless 
@TransactionManagement(TransactionManagementType.CONTAINER) 
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public class SomeDaoBean implements SomeDaoLocal { 


    @Override 
    public void persistObject(SomeObject object) { 
     ... 
    } 
} 

當交易被由容器COMMITED,有一個回退,我們不能得到初始原因。調用persistObject的EJB做這樣的事情:

try { 
    someDao.persistObject(someObject); 
} catch (final EJBException ejbE) { 
    handleEjbException(someObject, ejbE); 
} 

當我們試圖處理並記錄捕捉EJBException異常,原因是EJBTransactionRolledBackException和Websphere的所有實例記錄的原件(如java.sql.SQLIntegrityConstraintViolationException)到SystemOut日誌。

是否有配置WebSphere方式

  • 不會失去在事務邊界上原來的異常
  • 要不能登錄入SystemOut.log中

我知道我可以處理JPA通過擁有一個攔截器並自己沖洗,但我不喜歡這種解決方案。

回答

0

無法以某種方式自行管理交易,不會失去原始異常。

EJB規範要求記錄系統異常,並且WebSphere Application Server中沒有用於禁用該日誌記錄的選項。