Ok.  All of these issues should be fixed.

-David

On Jan 22, 2007, at 4:46 PM, David Blevins wrote:


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








Reply via email to