0

我在 jboss-7.1.1\standalone\configuration\standalone.xml 中创建了数据源

<datasource jta="true" jndi-name="java:jboss/datasources/POSPool" pool-name="POSPool" enabled="true" use-java-context="true" use-ccm="true">
                <connection-url>Connection url here</connection-url>
                <driver>oracle</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <prefill>true</prefill>
                    <use-strict-min>false</use-strict-min>
                    <flush-strategy>FailingConnectionOnly</flush-strategy>
                </pool>
                <security>
                    <user-name>username</user-name>
                    <password>password</password>
                </security>
            </datasource>
             <drivers>
                <driver name="oracle" module="com.oracle.ojdbc6">
                    <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
                </driver>
            </drivers>

presistance.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
        <persistence version="1.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/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
          <persistence-unit name="Khadamate-Services-JPAPU" transaction-type="JTA">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <jta-data-source>java:jboss/datasources/POSPool</jta-data-source>
            <exclude-unlisted-classes>false</exclude-unlisted-classes>
                 <properties>
                    <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
                </properties>
          </persistence-unit>
        </persistence>

我试图获取实体管理器,但它给出了一个异常 java.lang.NullPointerException:

HashMap<String, String> properties = new HashMap<String, String>();
        properties.put("ConnectionDriverName", "oracle.jdbc.OracleDriver");
        entityManagerFactory = Persistence.createEntityManagerFactory("Khadamate-Services-JPAPU", properties);

堆栈跟踪:

06:40:03,810 INFO  [stdout] (http--0.0.0.0-8888-5) Caused by: javax.servlet.ServletException: java.lang.NullPointerException

06:40:03,816 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)

06:40:03,837 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)

06:40:03,845 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.liferay.portal.struts.PortletRequestProcessor.processActionPerform(PortletRequestProcessor.java:441)

06:40:03,865 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)

06:40:03,873 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.liferay.portal.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:224)

06:40:03,881 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.liferay.portlet.StrutsPortlet.include(StrutsPortlet.java:274)

06:40:03,900 INFO  [stdout] (http--0.0.0.0-8888-5)  ... 196 more

06:40:03,906 INFO  [stdout] (http--0.0.0.0-8888-5) Caused by: java.lang.NullPointerException

06:40:03,913 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:73)

06:40:03,928 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:115)

06:40:03,936 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149)

06:40:03,945 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1207)

06:40:03,955 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:176)

06:40:03,965 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.ejb.EntityManagerImpl.<init>(EntityManagerImpl.java:89)

06:40:03,973 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:125)

06:40:03,982 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:120)

06:40:03,992 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.khdt.eservices.core.fdBusinessService.getEntityManager(fdBusinessService.java:30)

06:40:04,001 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.khdt.eservices.core.fdBusinessService.getTopRankedServices(fdBusinessService.java:48)

06:40:04,014 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.khdt.rankedServices.action.RankedServicesViewAction.render(RankedServicesViewAction.java:45)

06:40:04,034 INFO  [stdout] (http--0.0.0.0-8888-5)  at com.liferay.portal.struts.PortletAction.execute(PortletAction.java:111)

06:40:04,042 INFO  [stdout] (http--0.0.0.0-8888-5)  at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)

06:40:04,051 INFO  [stdout] (http--0.0.0.0-8888-5)  ... 200 more
4

1 回答 1

0

我认为您只需要指示休眠状态,jboss 提供了 jta 支持。在你的 persistence.xml 中添加这个:

<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
于 2013-09-16T15:46:42.143 回答