You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by Murali <mu...@emagia.com> on 2007/05/15 07:01:06 UTC

JNDI lookup in OpenJPA.

Hi,

I am new to OpenJPA technology.
  
I am having problems while performing JNDI lookup for the bean resources to get the EntityManagerFactory instance.
 
I am trying to perform JNDI lookup operation to fetch the DataSource & EntityManagerFactory instances to connect to the DataBase.
 
Following is the code snippet:
  
public static EntityManagerFactory  getOpenJPASessionFactory(String jndiSessionFactoryName)  throws DaoException {  
    EntityManagerFactory emFactory = null;  
    try {
       Context ctx = new InitialContext();
       emFactory = (EntityManagerFactory) ctx.lookup(jndiSessionFactoryName);
    }catch (ClassCastException cce) {
       throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, cce);  
    } catch (NamingException ne) {
       throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, ne);  
    }  
    return emFactory; 
} 
  
When i try to get the EntityManager Instance from Factory instance, it says "jndiSessionFactoryName" is not bound, because of this i am not able to get the Datasource for performing the Database operations.
  
Following are the environment details:
  
Application Server: Jboss-4.0.4.GA
Operating System with version: Redhat Linux 4, with kernel version 2.6.9.42 Elsmp 
OpenJPA version: 0.9.7 
JDK version: Jdk 1.5.0_07
Database: IBM DB2  version 9.1

Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
Do we have to upgrade to any newer version of Jboss ?
  
Please help me in this regard. 
  
Thanks in advance.
  
Waiting for your response.
  
Regards,
Murali Krishna Adiraju.

Re: JNDI lookup in OpenJPA.

Posted by Kevin Sutter <kw...@gmail.com>.
On 5/17/07, Murali <mu...@emagia.com> wrote:

and the following error is getting displayed. Persistence.xml file is
> available in the META-INF folder.


Okay, and is this META-INF folder available to your build environment?  The
classpath that is referenced via your classpathref="dao.classpath" entry,
does that your META-INF/persistence.xml file available?

Kevin

  ----- Original Message -----
>   From: Murali
>   To: Patrick Linskey ; open-jpa-dev@incubator.apache.org
>   Cc: Murali Adiraju ; Deven Kalra ; G.S.S. Prabhakar ; Praveen G ;
> Budigam Srinivas Rao
>   Sent: Thursday, May 17, 2007 8:59 AM
>   Subject: Re: JNDI lookup in OpenJPA.
>
>
>   Hi Patrick Linskey,
>
>   We are not writing the OpenJPA code in EJB. Our Application is basically
> using Hibernate code for persistence D/B operations.
>   Since, Hibernate is having LGPL licensing terms we are trying to replace
> Hibernate with OpenJPA which is not having any Licensing issues.
>
>   We are able to create EntityManagerFactory & EntityManager instances
> without going for JNDI lookup operation.
>
>   We used the following approach:
>
>   EntityManagerFactory emFactory = Persistence.createEntityManagerFactory
> ("puName",System.getProperties());
>   EntityManager session = emFactory.createEntityManager();
>
>   But we are facing problems while persisting the DTO object. Following
> the trace of the exception that we have encountered:
>
>   2007-05-16 22:05:39,796 ERROR [
> com.receivables.server.dao.host.hibernate.HostGroupDAOImpl] The Security
> Server failed to persist data into the repository database. Refer to
> server.log for details.
>   <0.9.7-incubating nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance
> "com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2; name->test1;
> description->test1memberHosts->0policies->0]" to PersistenceCapable
> failed.  Ensure that it has been enhanced.
>   FailedObject: com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2;
> name->test1; description->test1memberHosts->0policies->0]
>    at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(
> BrokerImpl.java:4271)
>    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2373)
>    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2233)
>    at org.apache.openjpa.kernel.DelegatingBroker.persist(
> DelegatingBroker.java:1010)
>    at org.apache.openjpa.persistence.EntityManagerImpl.persist(
> EntityManagerImpl.java:541)
>    at com.receivables.server.dao.host.hibernate.HostGroupDAOImpl.create(
> HostGroupDAOImpl.java:113)
>    at com.receivables.server.host.HostGroupManager.createHostGroup(
> HostGroupManager.java:87)
>    at com.receivables.server.mgmt.ConsoleManagement.createHostGroup(
> ConsoleManagement.java:243)
>    at com.receivables.server.mgmt.console.host.HostGroupAddAction.execute(
> HostGroupAddAction.java:92)
>    at org.apache.struts.action.RequestProcessor.processActionPerform(
> RequestProcessor.java:431)
>    at org.apache.struts.action.RequestProcessor.process(
> RequestProcessor.java:236)
>    at org.apache.struts.action.ActionServlet.process(ActionServlet.java
> :1196)
>    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java
> :432)
>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:252)
>    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>    at
> com.receivables.server.mgmt.console.access.AuthorizationFilter.doFilter(
> AuthorizationFilter.java:70)
>    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
>    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(
> ReplyHeaderFilter.java:96)
>    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
>    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>    at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:213)
>    at org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:178)
>    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(
> SecurityAssociationValve.java:175)
>    at org.jboss.web.tomcat.security.JaccContextValve.invoke(
> JaccContextValve.java:74)
>    at org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java:126)
>    at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:105)
>    at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:107)
>    at org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:148)
>    at org.apache.coyote.http11.Http11Processor.process(
> Http11Processor.java:869)
>    at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
> (Http11BaseProtocol.java:664)
>    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
> PoolTcpEndpoint.java:527)
>    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
> LeaderFollowerWorkerThread.java:80)
>    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> ThreadPool.java:684)
>    at java.lang.Thread.run(Thread.java:803)
>   2007-05-16 22:22:38,672 INFO  [com.receivables.server.logger.LoggerUtil]
> Getting audit logger from Logger Util
>
>   We are trying to understand the meaning of "Enhancing the DTO object to
> Persistence capabilities" as observed in the trace of the exception.
>
>   Can you please help in this regard.
>
>   Thanks in advance.
>
>   Waiting for your response.
>
>   Regards,
>   Murali Krishna Adiraju.
>
>
>   ----- Original Message -----
>   From: "Patrick Linskey" <pl...@gmail.com>
>   To: <op...@incubator.apache.org>; "Murali" <
> murali.adiraju@emagia.com>
>   Sent: Thursday, May 17, 2007 2:00 AM
>   Subject: Re: JNDI lookup in OpenJPA.
>
>
>   > Hi,
>   >
>   > Are you writing this in an EJB, or some other artifact type?
>   >
>   > -Patrick
>   >
>   > On 5/14/07, Murali <mu...@emagia.com> wrote:
>   >> Hi,
>   >>
>   >> I am new to OpenJPA technology.
>   >>
>   >> I am having problems while performing JNDI lookup for the bean
> resources to get the EntityManagerFactory instance.
>   >>
>   >> I am trying to perform JNDI lookup operation to fetch the DataSource
> & EntityManagerFactory instances to connect to the DataBase.
>   >>
>   >> Following is the code snippet:
>   >>
>   >> public static EntityManagerFactory  getOpenJPASessionFactory(String
> jndiSessionFactoryName)  throws DaoException {
>   >>     EntityManagerFactory emFactory = null;
>   >>     try {
>   >>        Context ctx = new InitialContext();
>   >>        emFactory = (EntityManagerFactory) ctx.lookup
> (jndiSessionFactoryName);
>   >>     }catch (ClassCastException cce) {
>   >>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR,
> cce);
>   >>     } catch (NamingException ne) {
>   >>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR,
> ne);
>   >>     }
>   >>     return emFactory;
>   >> }
>   >>
>   >> When i try to get the EntityManager Instance from Factory instance,
> it says "jndiSessionFactoryName" is not bound, because of this i am not able
> to get the Datasource for performing the Database operations.
>   >>
>   >> Following are the environment details:
>   >>
>   >> Application Server: Jboss-4.0.4.GA
>   >> Operating System with version: Redhat Linux 4, with kernel version
> 2.6.9.42 Elsmp
>   >> OpenJPA version: 0.9.7
>   >> JDK version: Jdk 1.5.0_07
>   >> Database: IBM DB2  version 9.1
>   >>
>   >> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
>   >> Do we have to upgrade to any newer version of Jboss ?
>   >>
>   >> Please help me in this regard.
>   >>
>   >> Thanks in advance.
>   >>
>   >> Waiting for your response.
>   >>
>   >> Regards,
>   >> Murali Krishna Adiraju.
>   >>
>   >
>   >
>   > --
>   > Patrick Linskey
>   > 202 669 5907
>   >

Re: JNDI lookup in OpenJPA.

Posted by Murali <mu...@emagia.com>.
Hi Patrick Linskey,

We are using "Enhancing at Build Time" and modified our Build.xml and included the following in Build.xml file

<target name="enhance">
   <!-- define the openjpac task; this can be done at the top of the    -->
   <!-- build.xml file, so it will be available for all targets      -->
   <taskdef name="openjpac" classpathref="dao.classpath" classname="org.apache.openjpa.ant.PCEnhancerTask"/>
   <!-- invoke enhancer on all .java files below the model directory -->
   <openjpac>
     <fileset dir="${src-server.dir}/host">
       <include name="*.java" />
     </fileset>
   </openjpac>
 </target>

and the following error is getting displayed. Persistence.xml file is available in the META-INF folder.

  [openjpac] <0.9.7-incubating fatal user error> org.apache.openjpa.util.MetaDataException: MetaDataFactory could not be configured (conf.newMetaDataFactoryInstance() returned null). This might mean that no configuration properties were found. Ensure that you have a META-INF/persistence.xml file, that it is available in your classpath, or that the properties file you are using for configuration is available. If you are using Ant, please see the <properties> or <propertiesFile> attributes of the task's nested <config> element. This can also occur if your OpenJPA distribution jars are corrupt, or if your security policy is overly strict.
  [openjpac] at org.apache.openjpa.meta.MetaDataRepository.initializeMetaDataFactory(MetaDataRepository.java:1480)
  [openjpac] at org.apache.openjpa.meta.MetaDataRepository.endConfiguration(MetaDataRepository.java:1473)
  [openjpac] at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:450)
  [openjpac] at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:375)
  [openjpac] at org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:102)
  [openjpac] at org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:79)
  [openjpac] at org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:831)
  [openjpac] at org.apache.openjpa.ant.PCEnhancerTask.executeOn(PCEnhancerTask.java:88)
  [openjpac] at org.apache.openjpa.lib.ant.AbstractTask.execute(AbstractTask.java:169)
  [openjpac] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
  [openjpac] at org.apache.tools.ant.Task.perform(Task.java:364)
  [openjpac] at org.apache.tools.ant.Target.execute(Target.java:341)
  [openjpac] at org.apache.tools.ant.Target.performTasks(Target.java:369)
  [openjpac] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
  [openjpac] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
  [openjpac] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
  [openjpac] at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
  [openjpac] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
  [openjpac] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
  [openjpac] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)

Please help us to resolve the above problem.

Thanks,
Murali & Praveen.



  ----- Original Message ----- 
  From: Murali 
  To: Patrick Linskey ; open-jpa-dev@incubator.apache.org 
  Cc: Murali Adiraju ; Deven Kalra ; G.S.S. Prabhakar ; Praveen G ; Budigam Srinivas Rao 
  Sent: Thursday, May 17, 2007 8:59 AM
  Subject: Re: JNDI lookup in OpenJPA.


  Hi Patrick Linskey,

  We are not writing the OpenJPA code in EJB. Our Application is basically using Hibernate code for persistence D/B operations. 
  Since, Hibernate is having LGPL licensing terms we are trying to replace Hibernate with OpenJPA which is not having any Licensing issues.

  We are able to create EntityManagerFactory & EntityManager instances without going for JNDI lookup operation.

  We used the following approach:

  EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("puName",System.getProperties());
  EntityManager session = emFactory.createEntityManager();

  But we are facing problems while persisting the DTO object. Following the trace of the exception that we have encountered:

  2007-05-16 22:05:39,796 ERROR [com.receivables.server.dao.host.hibernate.HostGroupDAOImpl] The Security Server failed to persist data into the repository database. Refer to server.log for details.
  <0.9.7-incubating nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance "com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2; name->test1; description->test1memberHosts->0policies->0]" to PersistenceCapable failed.  Ensure that it has been enhanced.
  FailedObject: com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2; name->test1; description->test1memberHosts->0policies->0]
   at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4271)
   at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2373)
   at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2233)
   at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1010)
   at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:541)
   at com.receivables.server.dao.host.hibernate.HostGroupDAOImpl.create(HostGroupDAOImpl.java:113)
   at com.receivables.server.host.HostGroupManager.createHostGroup(HostGroupManager.java:87)
   at com.receivables.server.mgmt.ConsoleManagement.createHostGroup(ConsoleManagement.java:243)
   at com.receivables.server.mgmt.console.host.HostGroupAddAction.execute(HostGroupAddAction.java:92)
   at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at com.receivables.server.mgmt.console.access.AuthorizationFilter.doFilter(AuthorizationFilter.java:70)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
   at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
   at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
   at java.lang.Thread.run(Thread.java:803)
  2007-05-16 22:22:38,672 INFO  [com.receivables.server.logger.LoggerUtil] Getting audit logger from Logger Util

  We are trying to understand the meaning of "Enhancing the DTO object to Persistence capabilities" as observed in the trace of the exception.

  Can you please help in this regard.

  Thanks in advance.

  Waiting for your response.

  Regards,
  Murali Krishna Adiraju.


  ----- Original Message ----- 
  From: "Patrick Linskey" <pl...@gmail.com>
  To: <op...@incubator.apache.org>; "Murali" <mu...@emagia.com>
  Sent: Thursday, May 17, 2007 2:00 AM
  Subject: Re: JNDI lookup in OpenJPA.


  > Hi,
  > 
  > Are you writing this in an EJB, or some other artifact type?
  > 
  > -Patrick
  > 
  > On 5/14/07, Murali <mu...@emagia.com> wrote:
  >> Hi,
  >>
  >> I am new to OpenJPA technology.
  >>
  >> I am having problems while performing JNDI lookup for the bean resources to get the EntityManagerFactory instance.
  >>
  >> I am trying to perform JNDI lookup operation to fetch the DataSource & EntityManagerFactory instances to connect to the DataBase.
  >>
  >> Following is the code snippet:
  >>
  >> public static EntityManagerFactory  getOpenJPASessionFactory(String jndiSessionFactoryName)  throws DaoException {
  >>     EntityManagerFactory emFactory = null;
  >>     try {
  >>        Context ctx = new InitialContext();
  >>        emFactory = (EntityManagerFactory) ctx.lookup(jndiSessionFactoryName);
  >>     }catch (ClassCastException cce) {
  >>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, cce);
  >>     } catch (NamingException ne) {
  >>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, ne);
  >>     }
  >>     return emFactory;
  >> }
  >>
  >> When i try to get the EntityManager Instance from Factory instance, it says "jndiSessionFactoryName" is not bound, because of this i am not able to get the Datasource for performing the Database operations.
  >>
  >> Following are the environment details:
  >>
  >> Application Server: Jboss-4.0.4.GA
  >> Operating System with version: Redhat Linux 4, with kernel version 2.6.9.42 Elsmp
  >> OpenJPA version: 0.9.7
  >> JDK version: Jdk 1.5.0_07
  >> Database: IBM DB2  version 9.1
  >>
  >> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
  >> Do we have to upgrade to any newer version of Jboss ?
  >>
  >> Please help me in this regard.
  >>
  >> Thanks in advance.
  >>
  >> Waiting for your response.
  >>
  >> Regards,
  >> Murali Krishna Adiraju.
  >>
  > 
  > 
  > -- 
  > Patrick Linskey
  > 202 669 5907
  > 

Problem with Entity Cache

Posted by Praveen G <pr...@emagia.com>.
Hello Patrick Linskey,

We are facing the following problem in our project. 

<0.9.7-incubating fatal user error> org.apache.openjpa.persistence.InvalidStateException: Encountered unmanaged object "com.vormetric.server.dao.user.RoleDTO@51ac51ac" in persistent field "com.vormetric.server.dao.user.UserDTO.roles<element:class com.vormetric.server.dao.user.RoleDTO>" of managed object "com.vormetric.server.dao.user.UserDTO@4f164f16" during flush.  However, this field does not allow cascade persist.  You cannot flush unmanaged objects.
FailedObject: com.vormetric.server.dao.user.RoleDTO@51ac51ac
 at org.apache.openjpa.kernel.SingleFieldManager.preFlushPC(SingleFieldManager.java:750)
 at org.apache.openjpa.kernel.SingleFieldManager.preFlushPCs(SingleFieldManager.java:732)
 at org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:634)
 at org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:559)
 at org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:475)
 at org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2678)
 at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:39)
 at org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:854)
 at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1903)
 at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1863)
 at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1634)
 at org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:478)
 at org.apache.openjpa.kernel.StateManagerImpl.assignField(StateManagerImpl.java:558)
 at org.apache.openjpa.kernel.StateManagerImpl.beforeAccessField(StateManagerImpl.java:1365)
 at org.apache.openjpa.kernel.StateManagerImpl.accessingField(StateManagerImpl.java:1348)
 at com.vormetric.server.dao.user.UserDTO.pcGetid(UserDTO.java)
 at com.vormetric.server.dao.user.UserDTO.getId(UserDTO.java:93)
 at com.vormetric.server.dao.user.hibernate.UserDAOImpl.create(UserDAOImpl.java:89)
 at com.vormetric.server.sdk.user.UserManager.addUser(UserManager.java:52)
 at com.vormetric.server.mgmt.console.user.UserAddAction.execute(UserAddAction.java:67)


We are having 2 entity classes UserDTO and RoleDTO files. We want the RoleDTO entity to be readonly.
So Please help us to make an entity readonly in an application.

The following is the tag in our existing hibernate mapping file. We are replacing the hibernate code with OpenJPA code

<hibernate-mapping>
    <class name="com.vormetric.server.dao.user.RoleDTO" table="CGSS_ROLE">
  <cache usage="read-only"/>

So please help us as soon as possible, to make an entity readonly.

Thanks,
Praveen Kumar.


Re: JNDI lookup in OpenJPA.

Posted by Murali <mu...@emagia.com>.
Hi Patrick Linskey,

We are facing problems while retreiving the data from Persistent storage using OpenJPA. From the same java file we are able to perform Insert & Delete operations. 

Please find the attached zip file(src.zip) which consists of the code(UserDTO.java, RoleDTO.java and UserDAOImpl.java) of our application.
I am also mailing exception trace files (recv.log & server.log) files.
and also "persistence.xml" mapping file for OpenJPA.

Please help us in this regard.

We are eagerly waiting for your reply.

thanks in advance.

Regards,
Murali Krishna Adiraju.

RE: Exception while retrieving the data from database

Posted by Pinaki Poddar <pp...@bea.com>.
 1. The code snippet and the class definitions as presented in the email
worked without error with MySQL. The error possibly in somewhere else. 
 2. The failure suggests NPE caused by JBoss not finding a class
(LongId?) -- can you switch type of A.id to long from Long and try?  
 3. Looks like your code is querying the extent of B and then deleting
each instance. Please note that JPA supports delete by query which 
avoids fetching instances in memory before deleting them. 
 4. Instances of class B as described here will be stored in the same
table defined for A -- no need to specify it explictly
 5. please post to open-jpa mailing list directly and *not* directly to
my mail address.

Pinaki Poddar
BEA Systems
415.402.7317  


-----Original Message-----
From: Praveen G [mailto:praveenkumar.gandla@emagia.com] 
Sent: Friday, May 18, 2007 10:27 AM
To: Pinaki Poddar; open-jpa-dev@incubator.apache.org; Patrick Linskey
Subject: Exception while retrieving the data from database

Hello Pinaki/Patrick,
 
I am having following two classes 
 
@Entity
@Table(name = "LOG_DB2")
public class B extends A {
 @Column(name = "INSTANCE_NAME")
 private String instanceName; 
 
 @Column(name = "DB2_TIMESTAMP")
 private Timestamp db2Timestamp;
 
 @Column(name = "DB_ALIAS")
 private String dbAlias;
 
 @Column(name = "DB_PARTITION")
 private int partitionNum;
 
 
@Entity
@Table(name = "LOG_DB2")
@MappedSuperclass
public class A {
 @Column(name = "LOG_ID")
 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;
 
 @Column(name = "TAG")
 private String tag;
 
 @Column(name = "SUBTAG")
 private String subtag;
 
I am able to store the data into database successfully where as I am
facing the problem while retriveing the data from the database, the
following is the code and highlighted the problem area in the code
 
em=ServiceLocator.getOpenJPASession("pu1");
em.getTransaction().begin();
Query q = em.createQuery("select ad from B ad"); for (B l :
(List<B>)q.getResultList()) {  System.out.println("Host Name is :
"+l.getHostName()+" Instance Name is "+l.getInstanceName());
em.remove(l); } em.getTransaction().commit();
 
The following error occurs
 
<0.9.7-incubating nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: null  at
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:857)
 at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
 at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.ja
va:776)
 at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
 at
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java
:2152)
 at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
 at
org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObj
ect(InstanceResultObjectProvider.java:59)
 at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:3
6)
 at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:762)
 at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:5
17)
 at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:230)
 at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:26
9)
 at
com.server.dao.audit.hibernate.AuditDAOImpl.purgeDebugMessages(AuditDAOI
mpl.java:196)
 at
com.server.messageanalyzer.MessageAnalyzerManager.purgeDebugMessages(Mes
sageAnalyzerManager.java:113)
 at
com.server.mgmt.ConsoleManagement.purgeDebugMessages(ConsoleManagement.j
ava:675)
 at
com.server.mgmt.console.log.LogAnalyzerAction.execute(LogAnalyzerAction.
java:217)
 at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestPr
ocessor.java:431)
 at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:252)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
com.server.mgmt.console.access.AuthorizationFilter.doFilter(Authorizatio
nFilter.java:70)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
r.java:96)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:178)
 at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs
sociationValve.java:175)
 at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
ava:74)
 at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
 at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:107)
 at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
 at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:86
9)
 at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc
essConnection(Http11BaseProtocol.java:664)
 at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:527)
 at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow
erWorkerThread.java:80)
 at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:684)
 at java.lang.Thread.run(Thread.java:803)
Caused by: 
java.lang.NullPointerException
 at
org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoad
er.java:620)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:602)
 at
org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClass
Loader.java:464)
 at
org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoad
er.java:405)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:568)
 at com.server.dao.audit.A.pcCopyKeyFieldsFromObjectId(A.java)
 at com.server.dao.audit.B.pcNewInstance(B.java)
 at
org.apache.openjpa.enhance.PCRegistry.newInstance(PCRegistry.java:121)
 at
org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.j
ava:250)
 at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStor
eManager.java:330)
 at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreMana
ger.java:255)
 at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingSt
oreManager.java:111)
 at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.jav
a:57)
 at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
 at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)
 
Please help me to resolve the above problem as soon as possible.
 
Thanks,
Praveen Kumar.

Notice:  This email message, together with any attachments, may contain information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,  copyrighted  and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.

Exception while retrieving the data from database

Posted by Praveen G <pr...@emagia.com>.
Hello Pinaki/Patrick,

I am having following two classes 

@Entity
@Table(name = "LOG_DB2")
public class B extends A {
 @Column(name = "INSTANCE_NAME")
 private String instanceName;

 @Column(name = "DB2_TIMESTAMP")
 private Timestamp db2Timestamp;

 @Column(name = "DB_ALIAS")
 private String dbAlias;

 @Column(name = "DB_PARTITION")
 private int partitionNum;


@Entity
@Table(name = "LOG_DB2")
@MappedSuperclass
public class A {
 @Column(name = "LOG_ID")
 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @Column(name = "TAG")
 private String tag;

 @Column(name = "SUBTAG")
 private String subtag;

I am able to store the data into database successfully where as I am facing the problem 
while retriveing the data from the database, the following is the code and highlighted the 
problem area in the code

em=ServiceLocator.getOpenJPASession("pu1");
em.getTransaction().begin();
Query q = em.createQuery("select ad from B ad");
for (B l : (List<B>)q.getResultList()) {
 System.out.println("Host Name is : "+l.getHostName()+" Instance Name is "+l.getInstanceName());
 em.remove(l);
}
em.getTransaction().commit();

The following error occurs

<0.9.7-incubating nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null
 at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:857)
 at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:756)
 at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
 at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
 at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2152)
 at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
 at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
 at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
 at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1219)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:987)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:796)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:766)
 at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:762)
 at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
 at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:230)
 at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
 at com.server.dao.audit.hibernate.AuditDAOImpl.purgeDebugMessages(AuditDAOImpl.java:196)
 at com.server.messageanalyzer.MessageAnalyzerManager.purgeDebugMessages(MessageAnalyzerManager.java:113)
 at com.server.mgmt.ConsoleManagement.purgeDebugMessages(ConsoleManagement.java:675)
 at com.server.mgmt.console.log.LogAnalyzerAction.execute(LogAnalyzerAction.java:217)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at com.server.mgmt.console.access.AuthorizationFilter.doFilter(AuthorizationFilter.java:70)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
 at java.lang.Thread.run(Thread.java:803)
Caused by: 
java.lang.NullPointerException
 at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:620)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:602)
 at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:464)
 at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:568)
 at com.server.dao.audit.A.pcCopyKeyFieldsFromObjectId(A.java)
 at com.server.dao.audit.B.pcNewInstance(B.java)
 at org.apache.openjpa.enhance.PCRegistry.newInstance(PCRegistry.java:121)
 at org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:250)
 at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:330)
 at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
 at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
 at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
 at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:876)
 at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:834)

Please help me to resolve the above problem as soon as possible.

Thanks,
Praveen Kumar.

RE: JNDI lookup in OpenJPA.

Posted by Pinaki Poddar <pp...@bea.com>.
 Hello,

> We are trying to understand the meaning of "Enhancing the DTO object
to Persistence capabilities" as observed in the trace of the exception.
OpenJPA needs to "enhance" the Java classes to be stored in a database.
Enhancement means modification of original Java class bytecode with
special
instructions. The classes can be enhanced in following ways:

1. Build-time: After the Java class has been compiled, run 
    $ java org.apache.openjpa.enhance.PCEnhancer -properties <path to
persistence.xml> 
 The enhancer program supports several other options (refer
http://incubator.apache.org/openjpa/docs/latest/manual/manual.html#ref_g
uide_pc_enhance)
   This will overwrite the bytecodes of the Java classes (you can simply
notice them by growing size of *.class files or disassemble through
javap or jad to see what
code/methods have been added to the original).
    
     The same enhancer can be invoked through an Ant task to integrate
the enhancement step in build/package/deploy process.

2.  Runtime:  Invoke Java runtime of your OpenJPA application with
-javaagent as follows
    $ java -agent /path/to/openjpa.jar  com.acme.MyOpenJPAApplication
    -javaagent works only with Java 1.5 or later.


   Also recommended that you enumerate all the persistent Java classes
in <class> in persistence.xml e.g.
    <persisetnce-unit name="...">
        <class>com.acme.MyPOJO1</class>
        <class>com.acme.MyPOJO2</class>
        ......
    </persietnec-unit>
    


Pinaki Poddar
_______________________________________________________________________
Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it.



-----Original Message-----
From: Murali [mailto:murali.adiraju@emagia.com] 
Sent: Wednesday, May 16, 2007 10:30 PM
To: Patrick Linskey; open-jpa-dev@incubator.apache.org
Cc: Murali Adiraju; Deven Kalra; G.S.S. Prabhakar; Praveen G; Budigam
Srinivas Rao
Subject: Re: JNDI lookup in OpenJPA.

Hi Patrick Linskey,

We are not writing the OpenJPA code in EJB. Our Application is basically
using Hibernate code for persistence D/B operations. 
Since, Hibernate is having LGPL licensing terms we are trying to replace
Hibernate with OpenJPA which is not having any Licensing issues.

We are able to create EntityManagerFactory & EntityManager instances
without going for JNDI lookup operation.

We used the following approach:

EntityManagerFactory emFactory =
Persistence.createEntityManagerFactory("puName",System.getProperties());
EntityManager session = emFactory.createEntityManager();

But we are facing problems while persisting the DTO object. Following
the trace of the exception that we have encountered:

2007-05-16 22:05:39,796 ERROR
[com.receivables.server.dao.host.hibernate.HostGroupDAOImpl] The
Security Server failed to persist data into the repository database.
Refer to server.log for details.
<0.9.7-incubating nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Attempt to cast
instance "com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2;
name->test1; description->test1memberHosts->0policies->0]" to
PersistenceCapable failed.  Ensure that it has been enhanced.
FailedObject:
com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2;
name->test1; description->test1memberHosts->0policies->0]
 at
org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl
.java:4271)
 at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2373)
 at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2233)
 at
org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java
:1010)
 at
org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerIm
pl.java:541)
 at
com.receivables.server.dao.host.hibernate.HostGroupDAOImpl.create(HostGr
oupDAOImpl.java:113)
 at
com.receivables.server.host.HostGroupManager.createHostGroup(HostGroupMa
nager.java:87)
 at
com.receivables.server.mgmt.ConsoleManagement.createHostGroup(ConsoleMan
agement.java:243)
 at
com.receivables.server.mgmt.console.host.HostGroupAddAction.execute(Host
GroupAddAction.java:92)
 at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestPr
ocessor.java:431)
 at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
 at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:252)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
com.receivables.server.mgmt.console.access.AuthorizationFilter.doFilter(
AuthorizationFilter.java:70)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
r.java:96)
 at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
 at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
 at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
 at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:178)
 at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs
sociationValve.java:175)
 at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
ava:74)
 at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
 at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
 at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:107)
 at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
 at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:86
9)
 at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc
essConnection(Http11BaseProtocol.java:664)
 at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:527)
 at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow
erWorkerThread.java:80)
 at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:684)
 at java.lang.Thread.run(Thread.java:803)
2007-05-16 22:22:38,672 INFO  [com.receivables.server.logger.LoggerUtil]
Getting audit logger from Logger Util

We are trying to understand the meaning of "Enhancing the DTO object to
Persistence capabilities" as observed in the trace of the exception.

Can you please help in this regard.

Thanks in advance.

Waiting for your response.

Regards,
Murali Krishna Adiraju.


----- Original Message -----
From: "Patrick Linskey" <pl...@gmail.com>
To: <op...@incubator.apache.org>; "Murali"
<mu...@emagia.com>
Sent: Thursday, May 17, 2007 2:00 AM
Subject: Re: JNDI lookup in OpenJPA.


> Hi,
> 
> Are you writing this in an EJB, or some other artifact type?
> 
> -Patrick
> 
> On 5/14/07, Murali <mu...@emagia.com> wrote:
>> Hi,
>>
>> I am new to OpenJPA technology.
>>
>> I am having problems while performing JNDI lookup for the bean
resources to get the EntityManagerFactory instance.
>>
>> I am trying to perform JNDI lookup operation to fetch the DataSource
& EntityManagerFactory instances to connect to the DataBase.
>>
>> Following is the code snippet:
>>
>> public static EntityManagerFactory  getOpenJPASessionFactory(String
jndiSessionFactoryName)  throws DaoException {
>>     EntityManagerFactory emFactory = null;
>>     try {
>>        Context ctx = new InitialContext();
>>        emFactory = (EntityManagerFactory)
ctx.lookup(jndiSessionFactoryName);
>>     }catch (ClassCastException cce) {
>>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR,
cce);
>>     } catch (NamingException ne) {
>>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR,
ne);
>>     }
>>     return emFactory;
>> }
>>
>> When i try to get the EntityManager Instance from Factory instance,
it says "jndiSessionFactoryName" is not bound, because of this i am not
able to get the Datasource for performing the Database operations.
>>
>> Following are the environment details:
>>
>> Application Server: Jboss-4.0.4.GA
>> Operating System with version: Redhat Linux 4, with kernel version
2.6.9.42 Elsmp
>> OpenJPA version: 0.9.7
>> JDK version: Jdk 1.5.0_07
>> Database: IBM DB2  version 9.1
>>
>> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
>> Do we have to upgrade to any newer version of Jboss ?
>>
>> Please help me in this regard.
>>
>> Thanks in advance.
>>
>> Waiting for your response.
>>
>> Regards,
>> Murali Krishna Adiraju.
>>
> 
> 
> -- 
> Patrick Linskey
> 202 669 5907
>

Notice:  This email message, together with any attachments, may contain information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,  copyrighted  and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.

Re: JNDI lookup in OpenJPA.

Posted by Murali <mu...@emagia.com>.
Hi Patrick Linskey,

We are not writing the OpenJPA code in EJB. Our Application is basically using Hibernate code for persistence D/B operations. 
Since, Hibernate is having LGPL licensing terms we are trying to replace Hibernate with OpenJPA which is not having any Licensing issues.

We are able to create EntityManagerFactory & EntityManager instances without going for JNDI lookup operation.

We used the following approach:

EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("puName",System.getProperties());
EntityManager session = emFactory.createEntityManager();

But we are facing problems while persisting the DTO object. Following the trace of the exception that we have encountered:

2007-05-16 22:05:39,796 ERROR [com.receivables.server.dao.host.hibernate.HostGroupDAOImpl] The Security Server failed to persist data into the repository database. Refer to server.log for details.
<0.9.7-incubating nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance "com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2; name->test1; description->test1memberHosts->0policies->0]" to PersistenceCapable failed.  Ensure that it has been enhanced.
FailedObject: com.receivables.server.dao.host.HostGroupDTO@1ca61ca6[id->2; name->test1; description->test1memberHosts->0policies->0]
 at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4271)
 at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2373)
 at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2233)
 at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1010)
 at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:541)
 at com.receivables.server.dao.host.hibernate.HostGroupDAOImpl.create(HostGroupDAOImpl.java:113)
 at com.receivables.server.host.HostGroupManager.createHostGroup(HostGroupManager.java:87)
 at com.receivables.server.mgmt.ConsoleManagement.createHostGroup(ConsoleManagement.java:243)
 at com.receivables.server.mgmt.console.host.HostGroupAddAction.execute(HostGroupAddAction.java:92)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at com.receivables.server.mgmt.console.access.AuthorizationFilter.doFilter(AuthorizationFilter.java:70)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
 at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
 at java.lang.Thread.run(Thread.java:803)
2007-05-16 22:22:38,672 INFO  [com.receivables.server.logger.LoggerUtil] Getting audit logger from Logger Util

We are trying to understand the meaning of "Enhancing the DTO object to Persistence capabilities" as observed in the trace of the exception.

Can you please help in this regard.

Thanks in advance.

Waiting for your response.

Regards,
Murali Krishna Adiraju.


----- Original Message ----- 
From: "Patrick Linskey" <pl...@gmail.com>
To: <op...@incubator.apache.org>; "Murali" <mu...@emagia.com>
Sent: Thursday, May 17, 2007 2:00 AM
Subject: Re: JNDI lookup in OpenJPA.


> Hi,
> 
> Are you writing this in an EJB, or some other artifact type?
> 
> -Patrick
> 
> On 5/14/07, Murali <mu...@emagia.com> wrote:
>> Hi,
>>
>> I am new to OpenJPA technology.
>>
>> I am having problems while performing JNDI lookup for the bean resources to get the EntityManagerFactory instance.
>>
>> I am trying to perform JNDI lookup operation to fetch the DataSource & EntityManagerFactory instances to connect to the DataBase.
>>
>> Following is the code snippet:
>>
>> public static EntityManagerFactory  getOpenJPASessionFactory(String jndiSessionFactoryName)  throws DaoException {
>>     EntityManagerFactory emFactory = null;
>>     try {
>>        Context ctx = new InitialContext();
>>        emFactory = (EntityManagerFactory) ctx.lookup(jndiSessionFactoryName);
>>     }catch (ClassCastException cce) {
>>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, cce);
>>     } catch (NamingException ne) {
>>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, ne);
>>     }
>>     return emFactory;
>> }
>>
>> When i try to get the EntityManager Instance from Factory instance, it says "jndiSessionFactoryName" is not bound, because of this i am not able to get the Datasource for performing the Database operations.
>>
>> Following are the environment details:
>>
>> Application Server: Jboss-4.0.4.GA
>> Operating System with version: Redhat Linux 4, with kernel version 2.6.9.42 Elsmp
>> OpenJPA version: 0.9.7
>> JDK version: Jdk 1.5.0_07
>> Database: IBM DB2  version 9.1
>>
>> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
>> Do we have to upgrade to any newer version of Jboss ?
>>
>> Please help me in this regard.
>>
>> Thanks in advance.
>>
>> Waiting for your response.
>>
>> Regards,
>> Murali Krishna Adiraju.
>>
> 
> 
> -- 
> Patrick Linskey
> 202 669 5907
>

Re: JNDI lookup in OpenJPA.

Posted by Patrick Linskey <pl...@gmail.com>.
Hi,

Are you writing this in an EJB, or some other artifact type?

-Patrick

On 5/14/07, Murali <mu...@emagia.com> wrote:
> Hi,
>
> I am new to OpenJPA technology.
>
> I am having problems while performing JNDI lookup for the bean resources to get the EntityManagerFactory instance.
>
> I am trying to perform JNDI lookup operation to fetch the DataSource & EntityManagerFactory instances to connect to the DataBase.
>
> Following is the code snippet:
>
> public static EntityManagerFactory  getOpenJPASessionFactory(String jndiSessionFactoryName)  throws DaoException {
>     EntityManagerFactory emFactory = null;
>     try {
>        Context ctx = new InitialContext();
>        emFactory = (EntityManagerFactory) ctx.lookup(jndiSessionFactoryName);
>     }catch (ClassCastException cce) {
>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, cce);
>     } catch (NamingException ne) {
>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, ne);
>     }
>     return emFactory;
> }
>
> When i try to get the EntityManager Instance from Factory instance, it says "jndiSessionFactoryName" is not bound, because of this i am not able to get the Datasource for performing the Database operations.
>
> Following are the environment details:
>
> Application Server: Jboss-4.0.4.GA
> Operating System with version: Redhat Linux 4, with kernel version 2.6.9.42 Elsmp
> OpenJPA version: 0.9.7
> JDK version: Jdk 1.5.0_07
> Database: IBM DB2  version 9.1
>
> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
> Do we have to upgrade to any newer version of Jboss ?
>
> Please help me in this regard.
>
> Thanks in advance.
>
> Waiting for your response.
>
> Regards,
> Murali Krishna Adiraju.
>


-- 
Patrick Linskey
202 669 5907

Re: JNDI lookup in OpenJPA.

Posted by Kevin Sutter <kw...@gmail.com>.
Murali,
This is probably a question for the application server (jboss in your case)
rather than the jpa provider (openjpa).  The binding of an
EntityManagerFactory into jndi is an application server (ie. container)
process, not a jpa provider process.  (The same thing goes for your
datasource lookups).

Section 5.8.1 of the JPA spec outlines this requirement on the container:

5.8.1 Application-managed Persistence Contexts
When application-managed persistence contexts are used, the container must
instantiate the entity manager
factory and expose it to the application via JNDI.

I hope this information helps.

Kevin


On 5/15/07, Murali <mu...@emagia.com> wrote:
>
> Hi,
>
> I am new to OpenJPA technology.
>
> I am having problems while performing JNDI lookup for the bean resources
> to get the EntityManagerFactory instance.
>
> I am trying to perform JNDI lookup operation to fetch the DataSource &
> EntityManagerFactory instances to connect to the DataBase.
>
> Following is the code snippet:
>
> public static EntityManagerFactory  getOpenJPASessionFactory(String
> jndiSessionFactoryName)  throws DaoException {
>     EntityManagerFactory emFactory = null;
>     try {
>        Context ctx = new InitialContext();
>        emFactory = (EntityManagerFactory) ctx.lookup
> (jndiSessionFactoryName);
>     }catch (ClassCastException cce) {
>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, cce);
>     } catch (NamingException ne) {
>        throw new DaoException(DaoConstants.OPENJPA_FACTORY_ERROR, ne);
>     }
>     return emFactory;
> }
>
> When i try to get the EntityManager Instance from Factory instance, it
> says "jndiSessionFactoryName" is not bound, because of this i am not able to
> get the Datasource for performing the Database operations.
>
> Following are the environment details:
>
> Application Server: Jboss-4.0.4.GA
> Operating System with version: Redhat Linux 4, with kernel version
> 2.6.9.42 Elsmp
> OpenJPA version: 0.9.7
> JDK version: Jdk 1.5.0_07
> Database: IBM DB2  version 9.1
>
> Is there any interoperability issue of OpenJPA with Jboss-4.0.4.GA?
> Do we have to upgrade to any newer version of Jboss ?
>
> Please help me in this regard.
>
> Thanks in advance.
>
> Waiting for your response.
>
> Regards,
> Murali Krishna Adiraju.
>