为了账号安全,请及时绑定邮箱和手机立即绑定

PersistenceContext EntityManager注入NullPointer

PersistenceContext EntityManager注入NullPointer

侃侃尔雅 2019-10-18 09:54:27
我的战争包含以下内容:META-INF/MANIFEST.MFWEB-INF/classes/META-INF/persistence.xmlWEB-INF/classes/com/test/service/TestServlet.classWEB-INF/classes/com/test/service/TestEntity.classWEB-INF/classes/jndi.propertiesWEB-INF/classes/postgresql-ds.xmlWEB-INF/jboss-web.xmlWEB-INF/web.xmlindex.jsppersistence.xml:<?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="test">        <provider>org.hibernate.ejb.HibernatePersistence</provider>        <jta-data-source>java:/TestDS</jta-data-source>        <properties>            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>            <property name="hibernate.hbm2ddl.auto" value="update" />            <property name="hibernate.show_sql" value="true" />        </properties>    </persistence-unit></persistence>web.xml:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app>  <display-name>Test Web Application</display-name>    <context-param>        <param-name>resteasy.scan</param-name>        <param-value>true</param-value>    </context-param>    <listener>        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>    </listener>    <servlet>        <servlet-name>Resteasy</servlet-name>        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 当调用get()方法时,我得到一个NullPointerException; 尚未注入EntityManager。关于我可能缺少的或如何诊断的任何建议?服务器日志中几乎没有。我确定我在没有jboss-web.xml或web.xml中的数据源条目的情况下都能正常工作。我也已经将ds.xml分别部署到了deploy目录,并且绝对可以了-我可以在JMX控制台中看到它。使用JBoss 4.2.3和6.0构建进行了尝试,结果相同。
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

“实体管理器只能注入在事务内部运行的类中”。我认为这绝对不是正确的。您可以注入EXTENDED实体管理器,并在非事务方法中使用它,然后调用事务方法并加入事务(自动或通过调用EntityManager @ joinTransaction())。 

查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 993 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号