5

बनाने के लिए ट्रांज़ेक्शन मैनेजर या उपयोगकर्ता ट्रांज़ेक्शन तक पहुंचने में असमर्थ, मैं वेब ऐप बनाने के लिए एंटीटीमेनगर के साथ सर्वलेट्स, पोस्टग्रेएसक्यूएल और हाइबरनेट का उपयोग कर रहा था और जब तक मैं प्रोजेक्ट को मैवेन आधारित प्रोजेक्ट में नहीं ले जाता तब तक सब ठीक काम कर रहा था।हाइबरनेट: भौतिक लेनदेन प्रतिनिधि

org.hibernate.resource.transaction.backend.jta.internal.JtaPlatformInaccessibleException: Unable to access TransactionManager or UserTransaction to make physical transaction delegate 
at org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl.makePhysicalTransactionDelegate(JtaTransactionCoordinatorImpl.java:229) 
at org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl.getTransactionDriverControl(JtaTransactionCoordinatorImpl.java:203) 
at org.hibernate.engine.transaction.internal.TransactionImpl.<init>(TransactionImpl.java:36) 
at org.hibernate.internal.AbstractSessionImpl.getTransaction(AbstractSessionImpl.java:309) 
at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:277) 
at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1322) 
at org.hibernate.jpa.internal.EntityManagerImpl.internalGetSession(EntityManagerImpl.java:133) 
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:174) 
at org.hibernate.jpa.internal.EntityManagerImpl.<init>(EntityManagerImpl.java:83) 
at org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:311) 
at org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:278) 
at cl.bicubic.App.getEntityManager(App.java:100) 
at cl.bicubic.dao.DAO.<init>(DAO.java:24) 
at cl.bicubic.dao.UserAtomicDAO.<init>(UserAtomicDAO.java:15) 
at cl.bicubic.Application.init(Application.java:70) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655) 
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

यहाँ दृढ़ता इकाई में हाइबरनेट के विन्यास है: अब मैं इस अजीब अपवाद हर बार जब मैं एक EntityManagerFactory से एक EntityManager बनाने की कोशिश हो रही है

<properties> 
    <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/mydb?charSet=UTF-8"/> 
    <property name="hibernate.connection.user" value="dbuser"/> 
    <property name="hibernate.connection.password" value="dbpass"/> 
    <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
    <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect"/> 
    <property name="hibernate.c3p0.min_size" value="5"/> 
    <property name="hibernate.c3p0.max_size" value="20"/> 
    <property name="hibernate.c3p0.timeout" value="1800"/> 
    <property name="hibernate.c3p0.max_statements" value="50"/> 
    <property name="hibernate.connection.charSet" value="UTF-8"/> 
    <property name="hibernate.hbm2ddl.auto" value="update"/> 
    <property name="hibernate.id.new_generator_mappings" value="true"/> 
    <property name="hibernate.show_sql" value="true"/> 
    <property name="hibernate.format_sql" value="true"/> 
</properties> 

यह मैं कैसे बना है EntityManagerFactory:

public class App { 
    ... 
    private static EntityManagerFactory entityManagerFactory; 
    ... 
    public static void setServletContext(ServletContext context) throws IOException { 
     ... 
     entityManagerFactory = Persistence.createEntityManagerFactory("persistence-unit-name"); 
     ... 
    } 
    ... 
    public static EntityManager getEntityManager() { 
     return entityManagerFactory.createEntityManager(); //Here Throws the Exception 
    } 
    ... 
} 

मैं एक ServletContextListener

उपयोग करते हुए इस विधि कॉल
@WebListener 
public class ApplicationServletContextListener implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     try { 
      App.setServletContext(sce.getServletContext()); 
     } catch (Exception ex) { 
      Logger.getLogger(ApplicationServletContextListener.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    ... 

} 

यह मैं कैसे EntityManager

public class DAO { 
    ... 
    protected EntityManager entityManager; 
    ... 
    public DAO() { 
     entityManager = App.getEntityManager(); 
     ... 
    } 

    ... 
} 

मैं इस JtaPlatformInaccessibleException की उत्पत्ति के बारे में अधिक जानकारी के लिए देखने के लिए कोशिश की है बनाने की कोशिश, लेकिन मैं कुछ भी नहीं मिला है। मुझे यकीन नहीं है कि क्या गुम है।

+0

इम हाइबरनेट 5.0.1.Final और PostgreSQL चालक 9.2-1002-jdbc4 – zenilt

उत्तर

5

ठीक है ... यह सिर्फ दृढ़ता इकाई एक्सएमएल विन्यास पर एक त्रुटि हुई, मैं दृढ़ता इकाई टैग के लेन-देन प्रकार = "JTA" हटा दिया। ऐसा लगता है कि इसे आईडीई द्वारा स्वचालित रूप से जोड़ा गया था।

0

अपने डीएओ में @Transactional और अपनी डीएओ कक्षा तक पहुंचने वाली कक्षा जोड़ें।

देखें: http://spring.io/guides/gs/managing-transactions/

+0

मैं वसंत का उपयोग नहीं का उपयोग कर प्रॉपर्टी जोड़ना ...। मैंने @ ट्रांसेक्शनल जोड़ने की कोशिश की और कुछ भी नहीं किया .. – zenilt

+0

@ ट्रांसेक्शनल जेपीए जैवैक्स.ट्रांसेक्शन का हिस्सा है। ट्रांसेक्शन – K139

+0

हाँ मुझे पता है ... मैंने इसे जोड़ा .. और कुछ भी नहीं किया। – zenilt

10

बस HttpServlet सिर्फ एक सरल अपने persistence.xml

<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/> 
+0

यह वह समाधान था जो मेरे लिए काम करता था। मूल पोस्टर का समाधान मेरे मामले में काम नहीं करता था। Wildfly 10.0.0.Final पर हाइबरनेट 5.0.7 का उपयोग करना, मैं अपने persistence.xml में निम्नलिखित लाइनों की जरूरत: <हठ इकाई नाम = "डिफ़ॉल्ट" लेन-देन प्रकार = "JTA"> ... <संपत्ति का नाम = "hibernate.transaction.jta.platform" value = "org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" /> – BRasmussen

संबंधित मुद्दे