急!JBoss4.2.2 + Struts 2 + EJB3 + Hibernate 3 + MySQL的事务异常处理

baobaobeihao 2007-12-05 01:12:54
采用Action -> EJB -> DAO -> Hibernate的调用方法,希望在Hibernate抛出异常的时候,能在EJB中捕获异常,然后转换成一个String标示返回给Action

EJB的方法如下:

public CreateUserOut createUser(CreateUserIn in) {

CreateUserOut out = new CreateUserOut();

try {
User user = userAccess.createUser(in.getUser());
out.setUser(user);
return out;
} catch (Throwable e) {
out.setErrors(new String[]{e.getMessage()});
return out;
}
}


Action的方法如下:

CreateUserOut out = service.createUser(in);


因为在EJB实现类的方法里面已经通过Try{...} Catch{...}的方法捕获异常了,所以,Action调用EJB的时候,应该不会再收到EJB的异常。但是,诡异的是,实际情况中,Action仍然拿到了一个异常,如下:
javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1401)
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240)
org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210)
org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84)
$Proxy94.createUser(Unknown Source)
com.talentsearth.action.UserAction.create(UserAction.java:56)

请教这是怎么回事啊?
...全文
811 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
nec_5499 2008-06-21
  • 打赏
  • 举报
回复
nec_147 2008-06-19
  • 打赏
  • 举报
回复
menusystem 2008-06-16
  • 打赏
  • 举报
回复
fangyao8389 2008-05-22
  • 打赏
  • 举报
回复
up
zhang777xiao777wei 2008-05-12
  • 打赏
  • 举报
回复

∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:59049268正式开放!!!
期待大家的加入!!!
已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞
zhang777xiao777wei 2008-05-12
  • 打赏
  • 举报
回复

∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞

力争成为中国最大的架构师群联盟,架构师技术交流群:59049268正式开放!!!
期待大家的加入!!!
已经上传的顶级软件产品的架构分析,本群资料仅供研究学习,不得商用!!!
google 、
eBay、
Youtube、
淘宝等
......
技术文章包括:
《自己动手写操作系统》
《搜索引擎-原理、技术与系统》
《企业应用架构模式》
......
重要的RUP实例
设计模式精解
......
资料陆续上传中
∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞∽∝∞
chenciitc 2008-05-09
  • 打赏
  • 举报
回复
发表于:2008-05-09 13:40:51 楼主

北京思源培训中心(http://www.ciitc.com)专业做软件开发技术的培训;由于课程培训需要,长年高薪诚聘兼职讲师,欢迎计算机及相关专业的高校老师、研究生、博士生应聘
基本要求如下:
l 本科以上学历,计算机或相关专业毕业。
2 具有实际相关工作经验,从事过软件开发或系统管理工作。
3 语言表达清楚、流畅、逻辑思维清晰,英语听说良好。
4 诲人不倦,有高度的责任感、敬业精神和团队意识。
5 注重仪表,具有随机应变的能力。
6 具有一定的教学经验,从事过教学/培训业务者优先考虑。

精通应聘职位的某一部分课程内容,如下述编程语言或系统的一种或几种:
1. 编程语言:C++, VC++,VB.NET,C#, PowerBuilder, Delphi, Java,
Matlab , C++Builder
2. 数据库系统:SQL Server2000, SQL Server2005, Oracle,DB2,MySql
3. 网站编程:Marcomedia, HTML, Altova XML Suite,ASP, JSP, J2EE, J2SE,
PHP,ASP.NET,VB.NET, ColdFusion,ajax
4. 操作系统:Unix, Linux,Linux环境下嵌入式开发技术,Sun Solaris,IBM AIX
5. 办公软件:OFFICE(EXCEL、WORD、POWERPOINT)
6. 多媒体制作:Authorware7.0 , Director MX 2004
7. 图形动画类:Photoshop, Illustrator, CorelDRAW, FreeHand,
Flash ActionScript高级编程,3DMAX,AutoCAD2007 ,Maya
具有下述任何一种或几种国际IT认证证书者优先考虑:
1. 微软认证证书MCP / MCSA / MCSE / MCDBA / MCSD
2. SUN Java认证证书
3. Oracle认证证书
4. Macromedia认证证书
5. Linux认证证书
6. CIW (Certified Internet Webmaster) Associate/Professional/Master认证证书

有意者请把简历发到如下地址:abc@ciitc.com QQ:174629429 MSN:bjcosun@hotmail.com
http://www.ciitc.com



问题点数:20 回复次数:0 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复
chenciitc 2008-05-09
  • 打赏
  • 举报
回复
发表于:2008-05-09 13:40:51 楼主

北京思源培训中心(http://www.ciitc.com)专业做软件开发技术的培训;由于课程培训需要,长年高薪诚聘兼职讲师,欢迎计算机及相关专业的高校老师、研究生、博士生应聘
基本要求如下:
l 本科以上学历,计算机或相关专业毕业。
2 具有实际相关工作经验,从事过软件开发或系统管理工作。
3 语言表达清楚、流畅、逻辑思维清晰,英语听说良好。
4 诲人不倦,有高度的责任感、敬业精神和团队意识。
5 注重仪表,具有随机应变的能力。
6 具有一定的教学经验,从事过教学/培训业务者优先考虑。

精通应聘职位的某一部分课程内容,如下述编程语言或系统的一种或几种:
1. 编程语言:C++, VC++,VB.NET,C#, PowerBuilder, Delphi, Java,
Matlab , C++Builder
2. 数据库系统:SQL Server2000, SQL Server2005, Oracle,DB2,MySql
3. 网站编程:Marcomedia, HTML, Altova XML Suite,ASP, JSP, J2EE, J2SE,
PHP,ASP.NET,VB.NET, ColdFusion,ajax
4. 操作系统:Unix, Linux,Linux环境下嵌入式开发技术,Sun Solaris,IBM AIX
5. 办公软件:OFFICE(EXCEL、WORD、POWERPOINT)
6. 多媒体制作:Authorware7.0 , Director MX 2004
7. 图形动画类:Photoshop, Illustrator, CorelDRAW, FreeHand,
Flash ActionScript高级编程,3DMAX,AutoCAD2007 ,Maya
具有下述任何一种或几种国际IT认证证书者优先考虑:
1. 微软认证证书MCP / MCSA / MCSE / MCDBA / MCSD
2. SUN Java认证证书
3. Oracle认证证书
4. Macromedia认证证书
5. Linux认证证书
6. CIW (Certified Internet Webmaster) Associate/Professional/Master认证证书

有意者请把简历发到如下地址:abc@ciitc.com QQ:174629429 MSN:bjcosun@hotmail.com
http://www.ciitc.com



问题点数:20 回复次数:0 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
有问题请先GOOGLE,BAIDU
ydlchina 2007-12-08
  • 打赏
  • 举报
回复
拱分
JBossWeek 2007-12-06
  • 打赏
  • 举报
回复
可以试一试ejb3的interceptor,但是一般情况下没有这么做的必要
baobaobeihao 2007-12-05
  • 打赏
  • 举报
回复
那么如果一定要用CMT的话,怎么解决呢?
JBossWeek 2007-12-05
  • 打赏
  • 举报
回复
因为事务由ejb容器管理,所以在你的ejb方法里并没有提交事务,而是在你的方法结束之后,ejb容器获得控制权后才提交事务,这样事务类的异常就没有办法在ejb的方法中捕获

6,786

社区成员

发帖
与我相关
我的任务
社区描述
JBoss技术交流
社区管理员
  • JBoss技术交流社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧