EJBd---@PersistenceContextNullPointerException persistencecontext
JBoss6.0、JavaEE6、JPA2.0--EclipseLink、derby,项目是如下构成的,一个SLSB实现实体的CRUD,前端Servlet访问SLSB,其中,SLSB里的EntityManager是通过使用@Persistence注解注入的。周一把所有东西写好后,放到服务器端,运行后,报错,错误就是NullPointerException,经过跟踪,发现EntityManager没有被注入,所以报如上错误。
今天中午快十二点的时候才终于解决该问题。差不多用了两天时间,真是折磨人。
现在简单的记录下处理过程。
遇到该问题后,在网上查阅大量资料,网上查到和我所遇到的问题一样的不是很多。中文很少,英文能相对多些,但是没有一个是最终把问题解决的。我看到网上有一个案例,
http://blog.csdn.net/xiaomaha/article/details/6669528,我的程序以及配置和他的一模一样,但是不知道为什么就报告上面的错误。但是,我把程序打包,放到glassfish3下,运行是没有问题的。
昨天晚上再次看这个程序的时候,详细看了下jndi,在里面看到了如下内容:
+- EmployeeServiceBean (class:org.jnp.interfaces.NamingContext)
| +- local(class: Proxy for:example.employee.stateless.EmployeeService)
| +-local-example.employee.stateless.EmployeeService (class: Proxy for:example.employee.stateless.EmployeeService)
+-persistence.unit:unitName=jpa2cp3.war#EmployeeService (class:org.hibernate.impl.SessionFactoryImpl)
注意上面表位橘黄色的内容,可以看到,这个persistence的unit的实现为hibernate的SessionFactoryImpl,我猜测hibernate是jboss的项目,eclipselink是oracle捐献给eclipse的,所以,jboss所用到的jpa2.0的默认实现应该是hibernate,glassfish默认应该为eclipselink。一个SessionFactoryImpl是不是不能注入到一个EntityManagerFactory中?由于昨晚太晚,没有网络。所以,今天早上再继续。
早上直接在google搜索Jboss eclipselink,找到如下地址:
http://wiki.eclipse.org/EclipseLink/Examples/JPA/JBoss_Web_Tutorial#EclipseLink_JPA_Deployed_on_JBoss_6.0.0_M1_using_Eclipse_3.5_EE_edition
按照里面的操作:
1、将eclipselink.jar放到$JBOSS_HOME/common/lib以及$JBOSS_HOME/server/default/lib下。
2、按照网页里面的方式,重新修改了persisitence.xml,主要是添加了<provider></provider>标签。
重新部署后,运行,就好了。问题解决了。
后来我再做测试的时候,奇怪的事情又发生了,我现在把原先报告错误的项目,把服务器还原到之前状态,然后删除work目录。什么都不改,再次启动服务器运行的时候,竟然没有错误。好好的。
附录:
persistence.xml
<?xml version="1.0"encoding="UTF-8"?>
<persistence version="2.0"
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/persistencehttp://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<!-- <persistence-unit name="emtest"transaction-type="JTA"> -->
<persistence-unitname="emtest">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:/DerbyDS</jta-data-source>
<class>example.employee.model.Employee</class>
<properties>
<property name="eclipselink.target-server"value="JBoss" />
<property name="eclipselink.target-database"
value="org.eclipse.persistence.platform.database.DerbyPlatform"/>
<property name="eclipselink.logging.level"value="FINE" />
</properties>
</persistence-unit>
</persistence>
更多阅读
洗碗间管理制度 餐馆洗碗间的建设
无论经营大小餐馆,必须有清洗消毒餐具的地方,这就是洗碗间。 餐具即供消费者在用餐过程中所使用的碗、盘、碟、匙、筷以及茶杯、酒杯等器具。由于餐饮服务行业每天都要接待来自四面八方的顾客,其中大多数人是健康的,但难免少数人会有
s7复仇之矛符文天赋 复仇之矛卡莉丝塔天赋加点和符文
复仇之矛卡莉丝塔天赋加点和符文――简介复仇之矛卡莉丝塔这个英雄大家都在研究她的玩法,今天给大件推荐一个天赋符文,试验了几次,效果还算不错的。给大家分享一下复仇之矛卡莉丝塔天赋加点和符文。复仇之矛卡莉丝塔天赋加点和符文―
大学毕业生自我鉴定 四年大学毕业生的自我鉴定
四年的大学生活是我人生的关键点。四年的校园生涯和社会实践生活我不断的挑战自我、充实自己,为实现人生的价值打下坚实的基 础。一直都认为人应该是活到老学到老的我对知识、对本专业一丝不苟,因而在成绩上一直都得到肯定,每学年
郭敬明经典语录 韩寒经典语录
什么坛到最后也都是祭坛,什么圈到最后也都是花圈。—— 韩寒这年头,杀了爹或者被爹杀了都不算新闻。—— 韩寒和女性争辩是不明智的。无论这个女性是不是明智。—— 韩寒看来最保险的还是常备一
敦煌一日游旅游攻略 敦煌二日游攻略
敦煌市是甘肃省酒泉市代管的一个县级市,位于河西走廊的最西端,以下是小编为大家整理的敦煌二日游攻略,供大家参考!敦煌二日游攻略D1酒泉:莫高窟 > 三危山 > 月牙泉 > 鸣沙山 > 沙洲夜市早晨乘车前往莫高窟,借着清晨照进洞窟的第一道光