Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧&x2B;Jboss:查找时为实体管理器引发NullPointerException_Java_Hibernate_Spring Mvc_Jpa_Jboss - Fatal编程技术网

Java 弹簧&x2B;Jboss:查找时为实体管理器引发NullPointerException

Java 弹簧&x2B;Jboss:查找时为实体管理器引发NullPointerException,java,hibernate,spring-mvc,jpa,jboss,Java,Hibernate,Spring Mvc,Jpa,Jboss,我正在尝试配置spring框架、JPA和Jboss。所以我写了一个用于测试的端到端链,它只是基于实体查找实体。请查找下面的代码 try { /** * intentionally breaking code into two for testing * */ AbstractJpaEntity entity = null; /** * below

我正在尝试配置spring框架、JPA和Jboss。所以我写了一个用于测试的端到端链,它只是基于实体查找实体。请查找下面的代码

try {
            /**
             * intentionally breaking code into two for testing
             * */
            AbstractJpaEntity entity = null;
            /**
             * below line of code throws exception
             * 1) Type, id & em, none of them found null at run-time
             * */
            if(em.find(type, id)!=null){
                entity = em.find(type, id);
            }
            return entity;
        } catch (NoResultException nre) {
            throw new WalletException("no entity found", nre);
        }
因此,每当执行上述代码时,em.find(type,id)抛出空指针异常。我尝试调试,发现id和type具有预期的定义值,甚至em具有以下值:-

这表示xml中定义的持久化单元已正确加载,同样表示服务器启动日志。令人恼火的是,即使没有任何内容为null,但仍然会引发null指针异常。stacktrace如下所示:-

[org.apache.catalina.core.ContainerBase.[jboss.web].[default host]./AltSurvey].[rest]] (http--0.0.0.0-34567-2)Servlet的Servlet.service() 异常:java.lang.NullPointerException位于 org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:73) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:115) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149) [hibernate-core-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1207) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:176) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.EntityManagerImpl.(EntityManagerImpl.java:89) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:125) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:120) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) [rt.jar:1.7.0_67]at invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_67]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.067]位于java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.InvokeProxy方法(AbstractEntityManagerFactoryBean.java:376) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:517) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE] com.sun.proxy.$Proxy37.createEntityManager(未知源)位于 org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:234) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE] com.sun.proxy.$Proxy47.find(未知源)位于 com.alt.survey.common.db.dao.AbstractJpaDao.findById(AbstractJpaDao.java:84) [类别:]

看起来可疑的是,持久性单元最后一次为空:-

我已经检查了与配置相关的所有XML。但无法怀疑出现异常的任何原因。我正在攻击下面的XML:-

persistence.xml

<persistence-unit name="TalentPactFormEngine_New"
        transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/jdbc/TalentPactFormEngine_New</jta-data-source>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
            <property name="hibernate.default_schema" value="dbo" />
            <property name="hibernate.generate_statistics" value="true" />
            <property name="hibernate.cache.use_second_level_cache"
                value="true" />
            <property name="hibernate.cache.use_query_cache" value="true" />
            <property name="hibernate.cache.infinispan.cachemanager"
                value="java:jboss/infinispan/hibernate" />
        </properties>
    </persistence-unit>

org.hibernate.ejb.HibernatePersistence
java:/jdbc/TalentPactFormEngine\u新
真的
启用\u选择性
hibernateJpaConfig.xml

<bean id="surveyDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        scope="singleton" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${user}" />
        <property name="password" value="${password}" />
    </bean>

    <bean id="entityManagerFactory" depends-on="surveyDataSource"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="surveyDataSource" />
        <property name="persistenceXmlLocation" value="classpath:persistence.xml" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />

ApplicationContext.xml

<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <!-- <property name="jndiName" value="java:/jdbc/TalentPactFormEngine_New" 
            /> -->
        <property name="environment" ref="remoteEnv" />
    </bean>

    <jee:jndi-lookup id="wcDataSource"
        jndi-name="java:/jdbc/TalentPactFormEngine_New" resource-ref="false"
        environment-ref="remoteEnv" expected-type="javax.sql.DataSource" />

    <util:properties id="remoteEnv">
        <prop key="java.naming.provider.url">http://survey.peoplestrong.com:34567
        </prop>
        <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
        <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
        <prop key="jnp.disableDiscovery">true</prop>
    </util:properties>

http://survey.peoplestrong.com:34567
org.jboss.naming:org.jnp.interfaces
org.jnp.interfaces.NamingContextFactory
真的
最后是JBoss服务器的单机版

<datasource jta="true" jndi-name="java:/jdbc/TalentPactFormEngine_New" pool-name="TalentPactFormEngine_New" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:jtds:sqlserver://192.168.0.226:1433/talentpactformengine_new</connection-url>
                    <driver>net.sourceforge.jtds</driver>
                    <security>
                        <user-name>bla</user-name>
                        <password>blabla</password>
                    </security>
                </datasource>

jdbc:jtds:sqlserver://192.168.0.226:1433/talentpactformengine_new
net.sourceforge.jtds
布拉
布拉布拉

无法找到NullPointer异常的原因,任何类型的帮助都将非常有用。

正如您在的src代码中所看到的那样

事务管理器必须为空

final int status = transactionManager.getStatus();

检查事务管理器的配置。

我所述问题的@Xoce根本原因和您共享的链接可能重复,这两种情况完全不同。无论如何,谢谢你的关注。让我知道我能找到解决办法。