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