2014-03-06 75 views
0

我試圖將我的耳朵從glassfish 2升級到glassfish 3.我們曾經將我們的會話bean和我們的實體全部放在一個jar文件中。 I've learned,我需要把它們放在單獨的jar文件中,以便能夠部署到glassfish 3.我這樣做的方式是創建一個新jar,並將會話bean,ejb-jar.xml,persistence.xmlsun-ejb-jar.xml移入其中。會話bean lib將舊的lib作爲依賴項。舊的lib仍然包含我們使用的自定義Exception類,以及實體和幾乎所有曾經存在的其他類。從Glassfish 2升級到Glassfish 3.異常不再回滾交易

但是我從集成測試中注意到,當異常被拋出時,事務不像以前那樣回滾。我現在是仍然部署到GF2。除了這個微妙的問題,一切似乎都在起作用。我如何解決這個問題?我需要將這些Exception類移入會話bean jar嗎?

以下是對這些例外的一個看起來像一個例子:

@ApplicationException(rollback=true) 
public class MessageOutOfOrderException extends ConditionException { //this is the one that gets thrown 
//... 
} 

@ApplicationException(rollback=true) 
public class ConditionException extends Exception { //this is the parent. It also gets thrown directly sometimes 
//... 
} 

回答

0

這是一個錯誤GF2:https://java.net/jira/browse/GLASSFISH-5183

的解決方法是修改您的ejb-jar.xml和添加這樣的行到它:

<assembly-descriptor> 
    <application-exception> 
     <exception-class>com.blah.EntityAccessException</exception-class> 
     <rollback>true</rollback> 
    </application-exception> 

我希望GF3不需要這樣做。