Apache Geronimo > Discussion Forums  User List | Dev List | Wiki | Issue Tracker  

Persistence unit <class> annotation having no effect

View: New views
5 Messages — Rating Filter:   Alert me  

Persistence unit <class> annotation having no effect

by Q Beukes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey,

When doing unit tests, this work fine. But as soon as I deploy the app
to Geronimo, it fails.

I have 2 jars A and B. B depends on A, and both have entities classes.
Some of the entities in B reference (foreign keys) entities in A. So
to get this working I add the classes in in A I'm referencing to B's
persistence unit.

When I unit test, this works perfectly. But as soon as I deploy it, I
get the following:
2009-10-23 15:18:26,400 INFO  [config] Configuring enterprise
application: net.kunye/VDS-lamps-ejb/3.0/jar
2009-10-23 15:18:26,807 INFO  [OpenEJB] Auto-deploying ejb LampBean:
EjbDeployment(deployment-id=VDS-lamps-ejb/LampBean)
2009-10-23 15:18:26,808 INFO  [config] Enterprise application
"net.kunye/VDS-lamps-ejb/3.0/jar" loaded.
2009-10-23 15:18:28,719 INFO  [Ejb3Configuration] Processing
PersistenceUnitInfo [
        name: VDS-lamps-PU
        ...]
2009-10-23 15:18:28,961 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.vds.lamps.LampAssignment
2009-10-23 15:18:28,962 INFO  [EntityBinder] Bind entity
net.kunye.vds.lamps.LampAssignment on table LampAssignment
2009-10-23 15:18:29,004 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.vds.lamps.Lamp
2009-10-23 15:18:29,004 INFO  [EntityBinder] Bind entity
net.kunye.vds.lamps.Lamp on table Lamp
2009-10-23 15:18:29,017 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.vds.lamps.LampFault
2009-10-23 15:18:29,017 INFO  [EntityBinder] Bind entity
net.kunye.vds.lamps.LampFault on table LampFault
2009-10-23 15:18:29,018 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.vds.lamps.LampTest
2009-10-23 15:18:29,019 INFO  [EntityBinder] Bind entity
net.kunye.vds.lamps.LampTest on table LampTest
2009-10-23 15:18:29,033 ERROR [GBeanInstanceState] Error while
starting; GBean is now in the FAILED state:
abstractName="net.kunye/VDS-lamps-ejb/3.0/jar?EJBModule=net.kunye/VDS-lamps-ejb/3.0/jar,J2EEApplication=null,PersistenceUnitModule=ejb.jar,j2eeType=PersistenceUnit,name=VDS-lamps-PU"
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on
net.kunye.vds.lamps.LampAssignment.employee references an unknown
entity: net.kunye.personnel.Employee
        at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
        at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456)
        at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438)
        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1162)
        at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1226)
        at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:173)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:425)
        at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131)
        at org.apache.geronimo.persistence.PersistenceUnitGBean.<init>(PersistenceUnitGBean.java:127)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:910)
        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:269)
        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:125)
        at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:538)
        at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:377)
        at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:456)
        at org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:190)
        at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:546)
        at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:527)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
        at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:130)
        at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
        at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:237)
        at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
        at sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
        at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:130)
        at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
        at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:237)
        at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426)
        at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1366)
        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
        at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
        at sun.rmi.transport.Transport$1.run(Transport.java:159)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
2009-10-23 15:18:29,036 INFO  [startup] Assembling app:
/opt/kms/server/geronimo-2.2-20091022/var/temp/geronimo-deployer1499506686456954036.tmpdir/VDS-lamps-ejb-3.0.jar

The entity being referenced is in a module called KMS-Personnel-ejb. I
do have this module as a dependency. If it didn't find it, it should
would have told me so. Just a few moments before I deployed this one,
I have this in my log:
2009-10-23 15:14:49,688 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.personnel.Employee
2009-10-23 15:14:49,688 INFO  [EntityBinder] Bind entity
net.kunye.personnel.Employee on table Employee
2009-10-23 15:14:49,690 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.personnel.Visitor
2009-10-23 15:14:49,690 INFO  [EntityBinder] Bind entity
net.kunye.personnel.Visitor on table Visitor
2009-10-23 15:14:49,773 INFO  [AnnotationBinder] Binding entity from
annotated class: net.kunye.personnel.Company
2009-10-23 15:14:49,774 INFO  [EntityBinder] Bind entity
net.kunye.personnel.Company on table Company

This is my deployment plan: This is my deployment plan for the above project.
  <dep:environment>
    <dep:moduleId>
      <dep:groupId>net.kunye</dep:groupId>
      <dep:artifactId>VDS-lamps-ejb</dep:artifactId>
      <dep:version>3.0</dep:version>
      <dep:type>jar</dep:type>
    </dep:moduleId>

    <dep:dependencies>
      <dep:dependency>
        <dep:groupId>net.kunye</dep:groupId>
        <dep:artifactId>VDS-ejb</dep:artifactId>
        <dep:version>3.0</dep:version>
        <dep:type>jar</dep:type>
      </dep:dependency>
      <dep:dependency>
        <dep:groupId>net.kunye</dep:groupId>
        <dep:artifactId>KMS-Personnel-ejb</dep:artifactId>
        <dep:version>1.0</dep:version>
        <dep:type>jar</dep:type>
      </dep:dependency>
    </dep:dependencies>
  </dep:environment>

Can someone please advise how to get around this. It's an urgent problem.

Quintin Beukes

Re: Persistence unit <class> annotation having no effect

by Q Beukes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I think I might have why it works in OpenEJB and not in Geronimo. It
seems Geronimo has OpenJPA do the management, where OpenEJB does it
themselves.

Is there a way I can pass this responsibility over to OpenEJB instead?

Quintin Beukes



On Fri, Oct 23, 2009 at 3:25 PM, Quintin Beukes <quintin@...> wrote:

> Hey,
>
> When doing unit tests, this work fine. But as soon as I deploy the app
> to Geronimo, it fails.
>
> I have 2 jars A and B. B depends on A, and both have entities classes.
> Some of the entities in B reference (foreign keys) entities in A. So
> to get this working I add the classes in in A I'm referencing to B's
> persistence unit.
>
> When I unit test, this works perfectly. But as soon as I deploy it, I
> get the following:
> 2009-10-23 15:18:26,400 INFO  [config] Configuring enterprise
> application: net.kunye/VDS-lamps-ejb/3.0/jar
> 2009-10-23 15:18:26,807 INFO  [OpenEJB] Auto-deploying ejb LampBean:
> EjbDeployment(deployment-id=VDS-lamps-ejb/LampBean)
> 2009-10-23 15:18:26,808 INFO  [config] Enterprise application
> "net.kunye/VDS-lamps-ejb/3.0/jar" loaded.
> 2009-10-23 15:18:28,719 INFO  [Ejb3Configuration] Processing
> PersistenceUnitInfo [
>        name: VDS-lamps-PU
>        ...]
> 2009-10-23 15:18:28,961 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.vds.lamps.LampAssignment
> 2009-10-23 15:18:28,962 INFO  [EntityBinder] Bind entity
> net.kunye.vds.lamps.LampAssignment on table LampAssignment
> 2009-10-23 15:18:29,004 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.vds.lamps.Lamp
> 2009-10-23 15:18:29,004 INFO  [EntityBinder] Bind entity
> net.kunye.vds.lamps.Lamp on table Lamp
> 2009-10-23 15:18:29,017 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.vds.lamps.LampFault
> 2009-10-23 15:18:29,017 INFO  [EntityBinder] Bind entity
> net.kunye.vds.lamps.LampFault on table LampFault
> 2009-10-23 15:18:29,018 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.vds.lamps.LampTest
> 2009-10-23 15:18:29,019 INFO  [EntityBinder] Bind entity
> net.kunye.vds.lamps.LampTest on table LampTest
> 2009-10-23 15:18:29,033 ERROR [GBeanInstanceState] Error while
> starting; GBean is now in the FAILED state:
> abstractName="net.kunye/VDS-lamps-ejb/3.0/jar?EJBModule=net.kunye/VDS-lamps-ejb/3.0/jar,J2EEApplication=null,PersistenceUnitModule=ejb.jar,j2eeType=PersistenceUnit,name=VDS-lamps-PU"
> org.hibernate.AnnotationException: @OneToOne or @ManyToOne on
> net.kunye.vds.lamps.LampAssignment.employee references an unknown
> entity: net.kunye.personnel.Employee
>        at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
>        at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456)
>        at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438)
>        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309)
>        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1162)
>        at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1226)
>        at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:173)
>        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
>        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:425)
>        at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131)
>        at org.apache.geronimo.persistence.PersistenceUnitGBean.<init>(PersistenceUnitGBean.java:127)
>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>        at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
>        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
>        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>        at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:910)
>        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:269)
>        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>        at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:125)
>        at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:538)
>        at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:377)
>        at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:456)
>        at org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:190)
>        at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:546)
>        at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:527)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
>        at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:130)
>        at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
>        at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:237)
>        at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
>        at sun.reflect.GeneratedMethodAccessor134.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
>        at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:130)
>        at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
>        at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:237)
>        at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
>        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
>        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
>        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426)
>        at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
>        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1366)
>        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
>        at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
>        at sun.rmi.transport.Transport$1.run(Transport.java:159)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
>        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
>        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:619)
> 2009-10-23 15:18:29,036 INFO  [startup] Assembling app:
> /opt/kms/server/geronimo-2.2-20091022/var/temp/geronimo-deployer1499506686456954036.tmpdir/VDS-lamps-ejb-3.0.jar
>
> The entity being referenced is in a module called KMS-Personnel-ejb. I
> do have this module as a dependency. If it didn't find it, it should
> would have told me so. Just a few moments before I deployed this one,
> I have this in my log:
> 2009-10-23 15:14:49,688 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.personnel.Employee
> 2009-10-23 15:14:49,688 INFO  [EntityBinder] Bind entity
> net.kunye.personnel.Employee on table Employee
> 2009-10-23 15:14:49,690 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.personnel.Visitor
> 2009-10-23 15:14:49,690 INFO  [EntityBinder] Bind entity
> net.kunye.personnel.Visitor on table Visitor
> 2009-10-23 15:14:49,773 INFO  [AnnotationBinder] Binding entity from
> annotated class: net.kunye.personnel.Company
> 2009-10-23 15:14:49,774 INFO  [EntityBinder] Bind entity
> net.kunye.personnel.Company on table Company
>
> This is my deployment plan: This is my deployment plan for the above project.
>  <dep:environment>
>    <dep:moduleId>
>      <dep:groupId>net.kunye</dep:groupId>
>      <dep:artifactId>VDS-lamps-ejb</dep:artifactId>
>      <dep:version>3.0</dep:version>
>      <dep:type>jar</dep:type>
>    </dep:moduleId>
>
>    <dep:dependencies>
>      <dep:dependency>
>        <dep:groupId>net.kunye</dep:groupId>
>        <dep:artifactId>VDS-ejb</dep:artifactId>
>        <dep:version>3.0</dep:version>
>        <dep:type>jar</dep:type>
>      </dep:dependency>
>      <dep:dependency>
>        <dep:groupId>net.kunye</dep:groupId>
>        <dep:artifactId>KMS-Personnel-ejb</dep:artifactId>
>        <dep:version>1.0</dep:version>
>        <dep:type>jar</dep:type>
>      </dep:dependency>
>    </dep:dependencies>
>  </dep:environment>
>
> Can someone please advise how to get around this. It's an urgent problem.
>
> Quintin Beukes
>

Re: Persistence unit <class> annotation having no effect

by djencks :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I don't understand what you are trying to do yet.

How many persistence.xml files are there?  AFAIK persistence units  
can't refer to each other, so you might be able to get things to work  
if the classes are distributed between jars A and B but there is only  
one persistence.xml, in B.  In this case I'd wonder why you needed two  
jars, why not just put everything in B?

On Oct 23, 2009, at 8:40 AM, Quintin Beukes wrote:

> I think I might have why it works in OpenEJB and not in Geronimo. It
> seems Geronimo has OpenJPA do the management, where OpenEJB does it
> themselves.

Not sure what management you are talking about here, and are you using  
hibernate jpa?
>
> Is there a way I can pass this responsibility over to OpenEJB instead?

I don't think so.

If there are 2 persistence.xmls, IMO any time this works you've found  
a bug, and the bug might depend on a particular classloader structure  
that occurs in your tests but not runtime environment.

thanks
david jencks


>
> Quintin Beukes
>
>
>
> On Fri, Oct 23, 2009 at 3:25 PM, Quintin Beukes  
> <quintin@...> wrote:
>> Hey,
>>
>> When doing unit tests, this work fine. But as soon as I deploy the  
>> app
>> to Geronimo, it fails.
>>
>> I have 2 jars A and B. B depends on A, and both have entities  
>> classes.
>> Some of the entities in B reference (foreign keys) entities in A. So
>> to get this working I add the classes in in A I'm referencing to B's
>> persistence unit.
>>
>> When I unit test, this works perfectly. But as soon as I deploy it, I
>> get the following:
>> 2009-10-23 15:18:26,400 INFO  [config] Configuring enterprise
>> application: net.kunye/VDS-lamps-ejb/3.0/jar
>> 2009-10-23 15:18:26,807 INFO  [OpenEJB] Auto-deploying ejb LampBean:
>> EjbDeployment(deployment-id=VDS-lamps-ejb/LampBean)
>> 2009-10-23 15:18:26,808 INFO  [config] Enterprise application
>> "net.kunye/VDS-lamps-ejb/3.0/jar" loaded.
>> 2009-10-23 15:18:28,719 INFO  [Ejb3Configuration] Processing
>> PersistenceUnitInfo [
>>        name: VDS-lamps-PU
>>        ...]
>> 2009-10-23 15:18:28,961 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.vds.lamps.LampAssignment
>> 2009-10-23 15:18:28,962 INFO  [EntityBinder] Bind entity
>> net.kunye.vds.lamps.LampAssignment on table LampAssignment
>> 2009-10-23 15:18:29,004 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.vds.lamps.Lamp
>> 2009-10-23 15:18:29,004 INFO  [EntityBinder] Bind entity
>> net.kunye.vds.lamps.Lamp on table Lamp
>> 2009-10-23 15:18:29,017 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.vds.lamps.LampFault
>> 2009-10-23 15:18:29,017 INFO  [EntityBinder] Bind entity
>> net.kunye.vds.lamps.LampFault on table LampFault
>> 2009-10-23 15:18:29,018 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.vds.lamps.LampTest
>> 2009-10-23 15:18:29,019 INFO  [EntityBinder] Bind entity
>> net.kunye.vds.lamps.LampTest on table LampTest
>> 2009-10-23 15:18:29,033 ERROR [GBeanInstanceState] Error while
>> starting; GBean is now in the FAILED state:
>> abstractName="net.kunye/VDS-lamps-ejb/3.0/jar?EJBModule=net.kunye/
>> VDS-lamps-ejb/3.0/
>> jar
>> ,J2EEApplication
>> =
>> null
>> ,PersistenceUnitModule=ejb.jar,j2eeType=PersistenceUnit,name=VDS-
>> lamps-PU"
>> org.hibernate.AnnotationException: @OneToOne or @ManyToOne on
>> net.kunye.vds.lamps.LampAssignment.employee references an unknown
>> entity: net.kunye.personnel.Employee
>>        at  
>> org
>> .hibernate
>> .cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81)
>>        at  
>> org
>> .hibernate
>> .cfg
>> .AnnotationConfiguration
>> .processEndOfQueue(AnnotationConfiguration.java:456)
>>        at  
>> org
>> .hibernate
>> .cfg
>> .AnnotationConfiguration
>> .processFkSecondPassInOrder(AnnotationConfiguration.java:438)
>>        at  
>> org
>> .hibernate
>> .cfg
>> .AnnotationConfiguration
>> .secondPassCompile(AnnotationConfiguration.java:309)
>>        at  
>> org.hibernate.cfg.Configuration.buildMappings(Configuration.java:
>> 1162)
>>        at  
>> org
>> .hibernate
>> .ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1226)
>>        at  
>> org
>> .hibernate
>> .ejb
>> .EventListenerConfigurator.configure(EventListenerConfigurator.java:
>> 173)
>>        at  
>> org
>> .hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:
>> 854)
>>        at  
>> org
>> .hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:
>> 425)
>>        at  
>> org
>> .hibernate
>> .ejb
>> .HibernatePersistence
>> .createContainerEntityManagerFactory(HibernatePersistence.java:131)
>>        at  
>> org
>> .apache
>> .geronimo
>> .persistence.PersistenceUnitGBean.<init>(PersistenceUnitGBean.java:
>> 127)
>>        at  
>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>        at  
>> sun
>> .reflect
>> .NativeConstructorAccessorImpl
>> .newInstance(NativeConstructorAccessorImpl.java:39)
>>        at  
>> sun
>> .reflect
>> .DelegatingConstructorAccessorImpl
>> .newInstance(DelegatingConstructorAccessorImpl.java:27)
>>        at  
>> java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>        at org.apache.xbean.recipe.ReflectionUtil
>> $ConstructorFactory.create(ReflectionUtil.java:952)
>>        at  
>> org
>> .apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:
>> 276)
>>        at  
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
>>        at  
>> org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:910)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean
>> .runtime
>> .GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:269)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:103)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean
>> .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:
>> 125)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:538)
>>        at  
>> org
>> .apache
>> .geronimo
>> .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:377)
>>        at  
>> org
>> .apache
>> .geronimo
>> .kernel
>> .config
>> .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:
>> 456)
>>        at  
>> org
>> .apache
>> .geronimo
>> .kernel
>> .config
>> .KernelConfigurationManager.start(KernelConfigurationManager.java:
>> 190)
>>        at  
>> org
>> .apache
>> .geronimo
>> .kernel
>> .config
>> .SimpleConfigurationManager
>> .startConfiguration(SimpleConfigurationManager.java:546)
>>        at  
>> org
>> .apache
>> .geronimo
>> .kernel
>> .config
>> .SimpleConfigurationManager
>> .startConfiguration(SimpleConfigurationManager.java:527)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at  
>> sun
>> .reflect
>> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at  
>> sun
>> .reflect
>> .DelegatingMethodAccessorImpl
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean
>> .runtime
>> .ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
>>        at  
>> org
>> .apache
>> .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:
>> 130)
>>        at  
>> org
>> .apache
>> .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
>>        at  
>> org
>> .apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:
>> 237)
>>        at  
>> org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
>>        at sun.reflect.GeneratedMethodAccessor134.invoke(Unknown  
>> Source)
>>        at  
>> sun
>> .reflect
>> .DelegatingMethodAccessorImpl
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at  
>> org
>> .apache
>> .geronimo
>> .gbean
>> .runtime
>> .ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
>>        at  
>> org
>> .apache
>> .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:
>> 130)
>>        at  
>> org
>> .apache
>> .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:850)
>>        at  
>> org
>> .apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:
>> 237)
>>        at  
>> org
>> .apache
>> .geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:
>> 172)
>>        at  
>> com
>> .sun
>> .jmx
>> .interceptor
>> .DefaultMBeanServerInterceptor
>> .invoke(DefaultMBeanServerInterceptor.java:836)
>>        at  
>> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:
>> 761)
>>        at  
>> javax
>> .management
>> .remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:
>> 1426)
>>        at javax.management.remote.rmi.RMIConnectionImpl.access
>> $200(RMIConnectionImpl.java:72)
>>        at javax.management.remote.rmi.RMIConnectionImpl
>> $PrivilegedOperation.run(RMIConnectionImpl.java:1264)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at  
>> javax
>> .management
>> .remote
>> .rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:
>> 1366)
>>        at  
>> javax
>> .management
>> .remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
>>        at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown  
>> Source)
>>        at  
>> sun
>> .reflect
>> .DelegatingMethodAccessorImpl
>> .invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at  
>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
>>        at sun.rmi.transport.Transport$1.run(Transport.java:159)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>>        at  
>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:
>> 535)
>>        at sun.rmi.transport.tcp.TCPTransport
>> $ConnectionHandler.run0(TCPTransport.java:790)
>>        at sun.rmi.transport.tcp.TCPTransport
>> $ConnectionHandler.run(TCPTransport.java:649)
>>        at java.util.concurrent.ThreadPoolExecutor
>> $Worker.runTask(ThreadPoolExecutor.java:886)
>>        at java.util.concurrent.ThreadPoolExecutor
>> $Worker.run(ThreadPoolExecutor.java:908)
>>        at java.lang.Thread.run(Thread.java:619)
>> 2009-10-23 15:18:29,036 INFO  [startup] Assembling app:
>> /opt/kms/server/geronimo-2.2-20091022/var/temp/geronimo-
>> deployer1499506686456954036.tmpdir/VDS-lamps-ejb-3.0.jar
>>
>> The entity being referenced is in a module called KMS-Personnel-
>> ejb. I
>> do have this module as a dependency. If it didn't find it, it should
>> would have told me so. Just a few moments before I deployed this one,
>> I have this in my log:
>> 2009-10-23 15:14:49,688 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.personnel.Employee
>> 2009-10-23 15:14:49,688 INFO  [EntityBinder] Bind entity
>> net.kunye.personnel.Employee on table Employee
>> 2009-10-23 15:14:49,690 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.personnel.Visitor
>> 2009-10-23 15:14:49,690 INFO  [EntityBinder] Bind entity
>> net.kunye.personnel.Visitor on table Visitor
>> 2009-10-23 15:14:49,773 INFO  [AnnotationBinder] Binding entity from
>> annotated class: net.kunye.personnel.Company
>> 2009-10-23 15:14:49,774 INFO  [EntityBinder] Bind entity
>> net.kunye.personnel.Company on table Company
>>
>> This is my deployment plan: This is my deployment plan for the  
>> above project.
>>  <dep:environment>
>>    <dep:moduleId>
>>      <dep:groupId>net.kunye</dep:groupId>
>>      <dep:artifactId>VDS-lamps-ejb</dep:artifactId>
>>      <dep:version>3.0</dep:version>
>>      <dep:type>jar</dep:type>
>>    </dep:moduleId>
>>
>>    <dep:dependencies>
>>      <dep:dependency>
>>        <dep:groupId>net.kunye</dep:groupId>
>>        <dep:artifactId>VDS-ejb</dep:artifactId>
>>        <dep:version>3.0</dep:version>
>>        <dep:type>jar</dep:type>
>>      </dep:dependency>
>>      <dep:dependency>
>>        <dep:groupId>net.kunye</dep:groupId>
>>        <dep:artifactId>KMS-Personnel-ejb</dep:artifactId>
>>        <dep:version>1.0</dep:version>
>>        <dep:type>jar</dep:type>
>>      </dep:dependency>
>>    </dep:dependencies>
>>  </dep:environment>
>>
>> Can someone please advise how to get around this. It's an urgent  
>> problem.
>>
>> Quintin Beukes
>>


Re: Persistence unit <class> annotation having no effect

by Quintin Beukes-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey David,

Thanks for the response.

See below

> How many persistence.xml files are there?  AFAIK persistence units can't
> refer to each other, so you might be able to get things to work if the
> classes are distributed between jars A and B but there is only one
> persistence.xml, in B.  In this case I'd wonder why you needed two jars, why
> not just put everything in B?

It's a modular system. Some modules would be on a system, where others
aren't. Or you would have module A and instead of a B a customized one
called "Bcustom", and so on. So it has to be many JARs. Further, for
scanning to happen you have to include a persistence.xml in the JAR
which you want scanned.

> Not sure what management you are talking about here, and are you using
> hibernate jpa?

OpenJPA creates/manages the EntityManagers, EntityManagerFactories,
PersistenceUnits, etc.

>> Is there a way I can pass this responsibility over to OpenEJB instead?
>
> I don't think so.

Yes. This does seem a bit complex.

> If there are 2 persistence.xmls, IMO any time this works you've found a bug,
> and the bug might depend on a particular classloader structure that occurs
> in your tests but not runtime environment.

Which JPA spec version is supported by Geronimo? In the EJB3.0 spec
this is a requirement. In fact, if 2 separate PUs reference the same
entity class, they have to refer to the same persistent instances.

Q

Re: Persistence unit <class> annotation having no effect

by Quintin Beukes-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Just to clarify:

>> If there are 2 persistence.xmls, IMO any time this works you've found a bug,
>> and the bug might depend on a particular classloader structure that occurs
>> in your tests but not runtime environment.
>
> Which JPA spec version is supported by Geronimo? In the EJB3.0 spec
> this is a requirement. In fact, if 2 separate PUs reference the same
> entity class, they have to refer to the same persistent instances.

This is only a requirement to be supported. There is nothing that says
they have to be automatically detected, so if you're doing this you
have to specify the class you're doing it with in the <class> element
inside persistence.xml. This is what I'm doing.

I'm busy looking around the Geronimo code to see why it doesn't work.
Could you perhaps clarify something to me. Where is the
persistence.xml parsed, and how is it passed onto
plugins/openjpa/geronimo-persistence-jpa10-builder?

At first glance it looks like my <class> elements are ignored (ie.
force to an empty list at all times, and an empty list given to
Hibernate).

Q