Wildfly 8.2和Hibernate:无法注册同步

Wildfly 8.2和Hibernate:无法注册同步,hibernate,wildfly,wildfly-8,Hibernate,Wildfly,Wildfly 8,我试图在WIldFly 8.2中实现restfull服务。我想使用hibernate处理db 1) 我在wildfly的配置文件中创建了数据源 2) 我在管理控制台中检查了连接。它起作用了 3) persistence.xml: <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persisten

我试图在WIldFly 8.2中实现restfull服务。我想使用hibernate处理db

1) 我在wildfly的配置文件中创建了数据源

2) 我在管理控制台中检查了连接。它起作用了

3) 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/persistence  
            http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">  
        <persistence-unit name="HSDB" transaction-type="JTA">  
            <jta-data-source>java:jboss/datasources/PostgreDataSource</jta-data-source>  
            <properties>  
                <property name="hibernate.hbm2ddl.auto" value="update" />  

                <property name="hibernate.show_sql" value="true" />  
                  <property name="format_sql" value="true" />  

            </properties>  
        </persistence-unit>  
    </persistence>  
rs文件:

  @Path("/")  
    public class HelloWorld {  

    @PersistenceUnit(unitName = "HSDB")  
        private EntityManagerFactory mEntityManagerFactory;  
    ...  

       @GET  
        @Path("/")  
        @Produces(MediaType.APPLICATION_XML)  
        @Consumes(MediaType.APPLICATION_XML)  
        public String getHelloWorldXML() {  
    //        EntityManagerFactory emf = Persistence.createEntityManagerFactory("HSDB"); //returns null  
    //        EntityManager em = emf.createEntityManager(); //null pointer exception on this line. emf is null  
            EntityManager em = mEntityManagerFactory.createEntityManager();  
            String id = "_def_";  
            Session session = (Session) em.getDelegate();  
            Transaction tx = null;  
            User person = null;  

            try {  
                tx = session.beginTransaction();  //<-- problem is here  
                person = (User) session.get(User.class, 7);  
                id = String.valueOf(person.getId());  
            } catch (HibernateException e) {  
                if (tx != null)  
                    tx.rollback();  
                e.printStackTrace();  
            } finally {  
                tx.commit();  
                session.close();  
            }  
            return "<xml><result>" + helloService.createHelloMessage("World")  + id + "</result></xml>";  


        }  
    }  
所以和数据库的连接是好的。但当我尝试在代码中使用它时,我遇到了以下错误:

  19:43:38,472 ERROR [stderr] (default task-35) org.hibernate.TransactionException: Could not register synchronization for container transaction  

    19:43:38,472 ERROR [stderr] (default task-35)     at org.hibernate.engine.transaction.internal.jta.CMTTransaction.afterTransactionBegin(CMTTransaction.java:72)  

    19:43:38,472 ERROR [stderr] (default task-35)     at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:166)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435)  

    19:43:38,473 ERROR [stderr] (default task-35)     at ru.suvitruf.hs.server.HelloWorld.getHelloWorldXML(HelloWorld.java:86)  

    19:43:38,473 ERROR [stderr] (default task-35)     at ru.suvitruf.hs.server.HelloWorld$Proxy$_$$_WeldClientProxy.getHelloWorldXML(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at java.lang.reflect.Method.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)  

    19:43:38,474 ERROR [stderr] (default task-35)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)  

    19:43:38,474 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)  

    19:43:38,474 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)  

    19:43:38,475 ERROR [stderr] (default task-35)     at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166)  

    19:43:38,477 ERROR [stderr] (default task-35)     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197)  

    19:43:38,477 ERROR [stderr] (default task-35)     at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.lang.Thread.run(Unknown Source)  

将此属性添加到persistence.xml后,效果良好:

<property name="hibernate.transaction.factory_class"
        value="org.hibernate.transaction.JDBCTransactionFactory" />

  19:43:38,472 ERROR [stderr] (default task-35) org.hibernate.TransactionException: Could not register synchronization for container transaction  

    19:43:38,472 ERROR [stderr] (default task-35)     at org.hibernate.engine.transaction.internal.jta.CMTTransaction.afterTransactionBegin(CMTTransaction.java:72)  

    19:43:38,472 ERROR [stderr] (default task-35)     at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:166)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435)  

    19:43:38,473 ERROR [stderr] (default task-35)     at ru.suvitruf.hs.server.HelloWorld.getHelloWorldXML(HelloWorld.java:86)  

    19:43:38,473 ERROR [stderr] (default task-35)     at ru.suvitruf.hs.server.HelloWorld$Proxy$_$$_WeldClientProxy.getHelloWorldXML(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at java.lang.reflect.Method.invoke(Unknown Source)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)  

    19:43:38,473 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)  

    19:43:38,474 ERROR [stderr] (default task-35)     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)  

    19:43:38,474 ERROR [stderr] (default task-35)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)  

    19:43:38,474 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)  

    19:43:38,474 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)  

    19:43:38,475 ERROR [stderr] (default task-35)     at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63)  

    19:43:38,475 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76)  

    19:43:38,476 ERROR [stderr] (default task-35)     at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166)  

    19:43:38,477 ERROR [stderr] (default task-35)     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197)  

    19:43:38,477 ERROR [stderr] (default task-35)     at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  

    19:43:38,477 ERROR [stderr] (default task-35)     at java.lang.Thread.run(Unknown Source)  
<property name="hibernate.transaction.factory_class"
        value="org.hibernate.transaction.JDBCTransactionFactory" />