On Jan 21, 2007, at 1:03 PM, Prasad Kashyap wrote:
I was able to deploy the app successfully but only after using an
openejb-jar.xml.
Dain & Blevins,
On the irc discussion on Sat, 01/20, we thought that an
openejb-jar.xml is not mandatory. I debugged the builder and realized
the contrary.
In the EJBModuleBuilder.java, it doesn't check to see if the
openejb-jar.xml is null or not.
String openejbJarXml = XmlUtil.loadOpenejbJarXml(object, moduleFile);
OpenejbJar openejbJar = XmlUtil.unmarshal(OpenejbJar.class,
openejbJarXml);
http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-
openejb-builder/src/main/java/org/apache/geronimo/openejb/
deployment/EjbModuleBuilder.java?view=log
On Jan 22, 2007, at 8:56 AM, Prasad Kashyap wrote:
Jarek,
I had the same error.
Try something like the following in your openejb-jar.xml
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
<ejb-deployment ejb-name="Calculator"
deployment-id="samples/calculator/stateless/
CalculatorLocal"
container-id="Default Stateless Container"/>
</openejb-jar>
First, a very big thank you to Prasad for really digging in this
weekend helping to find things that needed to be fixed. All because
if his input I was able to find what I think are the the last
remaining gotchas in the EJB deployment system. I've tried to file
jiras for everything, so here goes:
The first issue he discovered is with deploying an ejb app with no
ejb-jar.xml. Geronimo needs that file to determine it's an ejb app,
so at least an empty one is required to make deployment work. Here's
the jira for that:
http://issues.apache.org/jira/browse/GERONIMO-2770
So to fix that I need to see if there are any annotated beans in the
jar, which will be hard to do as there is no classloader available in
the 'createModule' section of the Geronimo deployment system. I
racked my brain for a bit and think with a little work to my xbean-
finder ClassFinder I can do the required sniffing with no classloader
as it's all ASM-based. I just need to add a couple methods to report
that data. I've filed a jira for that as well:
http://issues.apache.org/jira/browse/XBEAN-70
The second issue that Prasad found is that you have to had to have an
openejb-jar element in your geronimo-openejb.xml or the
EjbModuleBuilder will fail with a null pointer. This is the issue he
posted above. Dain as already fixed that issue and now you can have
an empty openejb-jar element in your geronimo-openejb.xml.
But I was still surprised about one thing (issue number three). Even
having an empty openejb-jar, which is something he tried, *should*
work. So I dug a bit more in the code on the openejb side and found
that the logic goes "if you have an openejb-jar, use it. If you
don't have one, create it automatically." I.e. so adding the empty
openejb-jar element effectively shut off the auto deploy
functionality. We do have the code that can augment an existing
openejb-jar and add missing definitions automatically, so I've
created an issue for that one as well.
http://issues.apache.org/jira/browse/OPENEJB-452
Hope to get these fixed in a couple hours. Big thank you to Prasad
for playing detective and finding *all* of these issues. Rather than
stopping at the first one, he kept going all the way to the end and
did what it took to get something working. Very appreciated and very
big time saver for me at least as I spent the weekend working on the
conversion tool and wouldn't have been able to do that without all
his work on this.
Nice Job, Prasad!
-David