geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Quintin Beukes <quin...@last.za.net>
Subject Re: Persistence unit <class> annotation having no effect
Date Fri, 23 Oct 2009 20:51:32 GMT
Hey,

I found why this is happening and have submitted a patch. Unless I
misinterpret the spec, without it Geronimo isn't EJB3.0 JPA (JavaEE 5)
compliant. David, please correct me if I'm wrong.

The JIRA explains in detail:
https://issues.apache.org/jira/browse/GERONIMO-4928

Quintin Beukes



On Fri, Oct 23, 2009 at 3:25 PM, Quintin Beukes <quintin@last.za.net> 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
>

Mime
View raw message