EJB3.0实体BEAN调用异常

妖精的舌头 2007-08-09 11:09:01
各位老大
我用MYECLIPSE5.5开发了个测试的EJB3.0实体BEAN,发布后,做了个测试类调用,老抛出异常,都郁闷了,实在找不到问题所在,特来求教,以下是异常的节选
javax.ejb.EJBException: java.lang.RuntimeException: java.lang.ExceptionInInitializerError; nested exception is: java.lang.RuntimeException: java.lang.ExceptionInInitializerError
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:174)....

aused by: java.lang.ExceptionInInitializerError
at com.ejb.UmsgFacade.findById(UmsgFacade.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
....

Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)....

Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:329).....

javax.ejb.EJBException: java.lang.RuntimeException: java.lang.ExceptionInInitializerError; nested exception is: java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:63).....

Caused by: java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:174)......


Caused by: java.lang.ExceptionInInitializerError
at com.ejb.UmsgFacade.findById(UmsgFacade.java:66).....

Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)......

Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:329).......


...全文
803 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
妖精的舌头 2007-08-20
  • 打赏
  • 举报
回复
谢谢各位关心,找到了问题了;因为EntityManager一直为空
而EntityManager为空的原因是
persistence unit受Java EE事务(取值JTA)管理并与之集成
此属性在Java EE环境中的默认值是JTA
而在Java SE环境中则为RESOURCE_LOCAL
而我的是java se 环境,所以设置的JTA事务出错;使用RESOURCE_LOCAL就没有问题了;
JTA 和 RESOURCE_LOCAL 两种事务管理有多大区别呢??

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

<persistence-unit name="ejbttt" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:/MySqlDS</non-jta-data-source>
</persistence-unit>

</persistence>
feihua317 2007-08-11
  • 打赏
  • 举报
回复
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
你的事务管理有问题?
IT孤儿 2007-08-11
  • 打赏
  • 举报
回复
你的测试类是在调用的SessionBean而你的SessionBean是在调用EntityBean,这个方式调用的是本地调用里面的数据是无法被远程调用出来的,可以在外部写个JavaBean然后在EntityBean中将数据放在这个javabean中,在将javabean放在一个ArrayList或Vector中,在远程返回的时候就返回这个集合就可以了 ,你可以试下
妖精的舌头 2007-08-10
  • 打赏
  • 举报
回复
继续
把问题顶上去/////
妖精的舌头 2007-08-09
  • 打赏
  • 举报
回复
本地接口和远程接口都一样呀,但我调用接口的查找方法就报以上的错误,无论是哪个方法...
無名VF 2007-08-09
  • 打赏
  • 举报
回复
查看一下本地接口中的findById()方法

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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