EJBd---@PersistenceContextNullPointerException persistencecontext

在学习jpa的时候,周一遇到了题目中的错误,描述下情况:
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)
EJBd---@PersistenceContextNullPointerException persistencecontext
+-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>

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/223580.html

更多阅读

企业成功之道 所谓小企业的成功之道(一)

  下午,呼狐朋狗友去另一狐朋狗友的茶楼喝了一通茶,侃了一通山。是夜,坐下来又不禁胡说一通的,呵呵~~说什么?说什么?反正说了也就说了,你们也习以为常见怪不怪了,是不是?  小企业,依旧是什么小企业的,呵呵~~还要什么所谓成功之道,自我感觉

文化创意产品策划方案 产品需要“创心策划”

 “创心策划”的核心是:被策划的对象要让接触者感动、感激、感谢、感触、感想、感化、感恩;要让接触者在视觉上“一见”而“钟情”,深深被“感爱”;要让接触者在听觉上成为策划对象的“知音”;要让接触者在嗅觉上灵敏地感受到策划对象

中国商朝地图 商朝地图――中国古代商朝地图

商朝地图商朝:(约前16世纪-约前11世纪),商王朝由部落首领汤建立。商朝都城:开始定都毫(今河地商丘),后盘庚在位时迁都殷(今河南安阳小屯村)。所以,商朝亦叫殷商。《史记・吴起列传》记载商朝疆域“左孟门,右太行,商朝疆域图常山在其北,大河经其

少先队建队67周年 2016年少先队建队67周年活动总结

&#160;2016年少先队建队67周年活动总结  为纪念中国少年先锋队建队67周年纪念日,为推进落实<中共中央国务院关于进一步加强和改进未成年人思想道德建设的若干意见>精神,引导和激励广大少先队员继承和发扬少先队的光荣传统,增强使

声明:《EJBd---@PersistenceContextNullPointerException persistencecontext》为网友冰块脸分享!如侵犯到您的合法权益请联系我们删除