java ee - EJB deployment in Apache TomEE using Hibernate Persistence Provider and MySQL DB -


i'm facing problem in configuration project build on ejb 3.0 technology. server container i'm using apache tomee v.7.0 (with built in openejb module), mysql database , hibernate persistence provider.

below configuration files:

tomee.xml

<?xml version="1.0" encoding="utf-8"?> <tomee> <resource id="lrsdatasource" type="javax.sql.datasource">     jdbcdriver com.mysql.jdbc.driver     jdbcurl jdbc:mysql://localhost:3306/lbrentalservice     username root     password 123456     jtamanaged true </resource> </tomee> 

persistence.xml

<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_2_0.xsd"              version="2.0">   <persistence-unit name="lrs-unit" transaction-type="jta">     <provider>org.hibernate.ejb.hibernatepersistence</provider>     <jta-data-source>lrsdatasource</jta-data-source>     <non-jta-data-source>lrsdatasourceunmanaged</non-jta-data-source>     <class>edu.drg.entity.book</class>     <class>edu.drg.entity.category</class>     <class>edu.drg.entity.person</class>     <class>edu.drg.entity.rentactivity</class>     <properties>       <property name="hibernate.hbm2ddl.auto" value="create"/>       <property name="hibernate.dialect" value="org.hibernate.dialect.mysqldialect" />       <property name="hibernate.query.factory_class"                 value="org.hibernate.hql.internal.classic.classicquerytranslatorfactory" />       <property name="hibernate.transaction.manager_lookup_class"                 value="org.apache.openejb.hibernate.transactionmanagerlookup"/>     </properties>   </persistence-unit> </persistence> 

person entity (other entities similar)

@entity @table (name="person", uniqueconstraints = { @uniqueconstraint(columnnames = "prs_id")}) @namedqueries({     @namedquery(name="findallpersons", query = "select p person p") }) public class person implements iperson, serializable{     /**      *       */     private static final long serialversionuid = 1l;     private long personid;     private string personname;     private string personsurname;      @id     @generatedvalue(strategy=generationtype.auto)     @column(name="prs_id")     public long getpersonid() {         return personid;     }     public void setpersonid(long personid) {         this.personid = personid;     }     @column(name="name")     public string getpersonname() {         return personname;     }     public void setpersonname(string personname) {         this.personname = personname;     }     @column(name="surname")     public string getpersonsurname() {         return personsurname;     }     public void setpersonsurname(string personsurname) {         this.personsurname = personsurname;     }     @override     public string tostring() {         return "person [personid=" + personid + ", personname=" + personname                 + ", personsurname=" + personsurname + "]";     }    } 

managerbean

@stateless(name="lrsmanager") public class lrsmanagerbean implements lrsmanager{     @resource(name="lrsdatasource")     datasource ds;      @persistencecontext(unitname="lrs-unit")     private entitymanager entitymanager;      @resource     private sessioncontext sessioncontext;      private static final log logger = logfactory.getlog(lrsmanagerbean.class);     @override     public void addbook (ibook book) {         entitymanager.persist(book);     }     @override     public list<iperson> getallpersons() {         system.out.println("is entitymanager not null: "+entitymanager!=null);         list<iperson> allpersons = null;         try {             final query query = entitymanager.createnamedquery("findallpersons");             allpersons = query.getresultlist();         } catch (persistenceexception e) {             e.printstacktrace();         }          return allpersons;     } 

local interface:

import javax.ejb.local; import edu.drg.interfaces.ilrsmanager;  @local public interface lrsmanager extends ilrsmanager {  } 

i'm trying access getallpersons() method via interface manager in servlet followss:

@webservlet("/retrieveallpersons") public class retrieveallpersons extends httpservlet {     private static final long serialversionuid = 1l;     //private ilrsmanager manager = lrsmanagerfactory.getinstance().getlrsmanager();     @ejb     private lrsmanager manager;     protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {         log logger = logfactory.getlog(this.getclass());         logger.debug("entering servlet");         list<iperson> allpersons = manager.getallpersons();         request.setattribute("allpersons", allpersons);         logger.debug("retrieved persons: "+allpersons);         requestdispatcher rd = request.getrequestdispatcher("persons.jsp");         rd.forward(request, response);     }  } 

however, have no idea why i'm getting following exception:

lug 07, 2015 2:12:40 pm org.apache.openejb.core.transaction.ejbtransactionutil handlesystemexception severe: ejbtransactionutil.handlesystemexception: null java.lang.nullpointerexception     @ org.hibernate.engine.transaction.internal.jta.jtastatushelper.getstatus(jtastatushelper.java:76)     @ org.hibernate.engine.transaction.internal.jta.jtastatushelper.isactive(jtastatushelper.java:118)     @ org.hibernate.engine.transaction.internal.jta.cmttransaction.join(cmttransaction.java:149)     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.jointransaction(abstractentitymanagerimpl.java:1602)     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.postinit(abstractentitymanagerimpl.java:210)     @ org.hibernate.jpa.internal.entitymanagerimpl.<init>(entitymanagerimpl.java:91)     @ org.hibernate.jpa.internal.entitymanagerfactoryimpl.internalcreateentitymanager(entitymanagerfactoryimpl.java:345)     @ org.hibernate.jpa.internal.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:332)     @ org.apache.openejb.assembler.classic.reloadableentitymanagerfactory.createentitymanager(reloadableentitymanagerfactory.java:160)     @ org.apache.openejb.persistence.jtaentitymanagerregistry.getentitymanager(jtaentitymanagerregistry.java:119)     @ org.apache.openejb.persistence.jtaentitymanager.getentitymanager(jtaentitymanager.java:96)     @ org.apache.openejb.persistence.jtaentitymanager.proxyifnotx(jtaentitymanager.java:326)     @ org.apache.openejb.persistence.jtaentitymanager.createnamedquery(jtaentitymanager.java:289)     @ edu.drg.ejb.lrsmanagerbean.getallpersons(lrsmanagerbean.java:44)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source)     @ java.lang.reflect.method.invoke(unknown source)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:192)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:173)     @ org.apache.openejb.monitoring.statsinterceptor.record(statsinterceptor.java:181)     @ org.apache.openejb.monitoring.statsinterceptor.invoke(statsinterceptor.java:100)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source)     @ java.lang.reflect.method.invoke(unknown source)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:192)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:173)     @ org.apache.openejb.core.interceptor.interceptorstack.invoke(interceptorstack.java:85)     @ org.apache.openejb.core.stateless.statelesscontainer._invoke(statelesscontainer.java:227)     @ org.apache.openejb.core.stateless.statelesscontainer.invoke(statelesscontainer.java:194)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler.synchronizedbusinessmethod(ejbobjectproxyhandler.java:308)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler.businessmethod(ejbobjectproxyhandler.java:303)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler._invoke(ejbobjectproxyhandler.java:92)     @ org.apache.openejb.core.ivm.baseejbproxyhandler.invoke(baseejbproxyhandler.java:308)     @ com.sun.proxy.$proxy76.getallpersons(unknown source)     @ edu.drg.servlet.retrieveallpersons.dopost(retrieveallpersons.java:36)     @ javax.servlet.http.httpservlet.service(httpservlet.java:646)     @ javax.servlet.http.httpservlet.service(httpservlet.java:727)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122)     @ org.apache.tomee.catalina.openejbvalve.invoke(openejbvalve.java:44)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)     @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)     @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1070)     @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:611)     @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:316)     @ java.util.concurrent.threadpoolexecutor.runworker(unknown source)     @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source)     @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     @ java.lang.thread.run(unknown source)  lug 07, 2015 2:12:40 pm org.apache.catalina.core.standardwrappervalve invoke severe: servlet.service() servlet [edu.drg.servlet.retrieveallpersons] in context path [/testingejb] threw exception javax.ejb.ejbexception: bean encountered non-application exception; nested exception is:      java.lang.nullpointerexception     @ org.apache.openejb.core.ivm.baseejbproxyhandler.convertexception(baseejbproxyhandler.java:408)     @ org.apache.openejb.core.ivm.baseejbproxyhandler.invoke(baseejbproxyhandler.java:312)     @ com.sun.proxy.$proxy76.getallpersons(unknown source)     @ edu.drg.servlet.retrieveallpersons.dopost(retrieveallpersons.java:36)     @ javax.servlet.http.httpservlet.service(httpservlet.java:646)     @ javax.servlet.http.httpservlet.service(httpservlet.java:727)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122)     @ org.apache.tomee.catalina.openejbvalve.invoke(openejbvalve.java:44)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)     @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)     @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1070)     @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:611)     @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:316)     @ java.util.concurrent.threadpoolexecutor.runworker(unknown source)     @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source)     @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)     @ java.lang.thread.run(unknown source) caused by: java.lang.nullpointerexception     @ org.hibernate.engine.transaction.internal.jta.jtastatushelper.getstatus(jtastatushelper.java:76)     @ org.hibernate.engine.transaction.internal.jta.jtastatushelper.isactive(jtastatushelper.java:118)     @ org.hibernate.engine.transaction.internal.jta.cmttransaction.join(cmttransaction.java:149)     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.jointransaction(abstractentitymanagerimpl.java:1602)     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.postinit(abstractentitymanagerimpl.java:210)     @ org.hibernate.jpa.internal.entitymanagerimpl.<init>(entitymanagerimpl.java:91)     @ org.hibernate.jpa.internal.entitymanagerfactoryimpl.internalcreateentitymanager(entitymanagerfactoryimpl.java:345)     @ org.hibernate.jpa.internal.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:332)     @ org.apache.openejb.assembler.classic.reloadableentitymanagerfactory.createentitymanager(reloadableentitymanagerfactory.java:160)     @ org.apache.openejb.persistence.jtaentitymanagerregistry.getentitymanager(jtaentitymanagerregistry.java:119)     @ org.apache.openejb.persistence.jtaentitymanager.getentitymanager(jtaentitymanager.java:96)     @ org.apache.openejb.persistence.jtaentitymanager.proxyifnotx(jtaentitymanager.java:326)     @ org.apache.openejb.persistence.jtaentitymanager.createnamedquery(jtaentitymanager.java:289)     @ edu.drg.ejb.lrsmanagerbean.getallpersons(lrsmanagerbean.java:44)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source)     @ java.lang.reflect.method.invoke(unknown source)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:192)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:173)     @ org.apache.openejb.monitoring.statsinterceptor.record(statsinterceptor.java:181)     @ org.apache.openejb.monitoring.statsinterceptor.invoke(statsinterceptor.java:100)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source)     @ java.lang.reflect.method.invoke(unknown source)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext$invocation.invoke(reflectioninvocationcontext.java:192)     @ org.apache.openejb.core.interceptor.reflectioninvocationcontext.proceed(reflectioninvocationcontext.java:173)     @ org.apache.openejb.core.interceptor.interceptorstack.invoke(interceptorstack.java:85)     @ org.apache.openejb.core.stateless.statelesscontainer._invoke(statelesscontainer.java:227)     @ org.apache.openejb.core.stateless.statelesscontainer.invoke(statelesscontainer.java:194)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler.synchronizedbusinessmethod(ejbobjectproxyhandler.java:308)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler.businessmethod(ejbobjectproxyhandler.java:303)     @ org.apache.openejb.core.ivm.ejbobjectproxyhandler._invoke(ejbobjectproxyhandler.java:92)     @ org.apache.openejb.core.ivm.baseejbproxyhandler.invoke(baseejbproxyhandler.java:308)     ... 25 more 

it seems wrong transactionmanager, i'm wondering if still have map entities via hibernate.cfg.xml , add mapping reference persistence.xml. have noticed when i'm trying access method, entitymanager removes records table. still didn't find me on tomee documentation. ideas?

found solution, may usefull someone.

as going use hibernate persistence provider , jta, transaction manager should corresponding one, till trying use implicit, open ejb transaction manager.

to solove problem, should use in persistence.xml, instead of

<property name="hibernate.transaction.manager_lookup_class"                 value="org.apache.openejb.hibernate.transactionmanagerlookup"/> 

this:

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

also aware of hibernate version using, i'm using 4.x, provider

<provider>org.hibernate.ejb.hibernatepersistence</provider> 

is deprecate, use instead:

<provider>org.hibernate.jpa.hibernatepersistenceprovider</provider> 

Comments

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

How to use Authorization & Authentication in Asp.net, C#? -