|
| Apache Geronimo > Discussion Forums | User List | Dev List | Wiki | Issue Tracker |
|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
Persistence unit <class> annotation having no effectHey,
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 effectI 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 effectI 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 effectHey 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 effectJust 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 |
| Free embeddable forum powered by Nabble | Forum Help |
