You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by David Jencks <da...@yahoo.com> on 2010/08/08 07:41:56 UTC

What kind of module is a war with ejbs inside?

I've been working on geronimo's ejb lite support.  The way geronimo is set up we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and expect openejb to decide that any module that it finds ejbs in, whether by finding an ejb-jar.xml or by finding annotated classes, is an ejb module.

Right now openejb is deciding that a module is an ejb module if it has an ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if there are annotated ejbs.

I don't understand why this would be appropriate for openejb, so what I'm provisionally implementing is:

- provide a flag in a constructor, preferEjb
- if its true, check for ejb-jar.xml and annotated ejbs before looking for web.xml, and if found decide the module is an ejb module
- if its is false, the current behavior, where we check for ejb-jar.xml, then web.xml, then annotated ejbs.

If the preferEjb=true behavior would be more appropriate for openejb by itself, let me know and I'll adjust the code appropriately.

many thanks
david jencks


Re: What kind of module is a war with ejbs inside?

Posted by Jarek Gawor <jg...@gmail.com>.
Heh. Looks like I've been reading a slightly older version of the
spec. So yes, we don't need to look for META-INF/ejb-jar.xml in jars
in wars.

Jarek

On Mon, Sep 20, 2010 at 12:29 PM, Gurkan Erdogdu
<gu...@yahoo.com> wrote:
> Hi Jarek,
>
> I am look at the same section, but I do not see META-INF/ejb-jar.xml, ? Am I
> looking a wrong place?
>
> Section 20.4 of the final EJB 3.1 specification said that
>
> "An enterprise bean class with a component-defining annotation defines an
> enterprise bean component
> when packaged within the WEB-INF/classes directory or in a .jar file within
> WEB-INF/lib. An
> enterprise bean can also be defined via WEB-INF/ejb-jar.xml."
>
> A .jar file in WEB-INF/lib that contains enterprise beans is not considered an
> independent Java EE
> “module” in the way that a .war file, stand-alone ejb-jar file, or an .ear-level
> ejb-jar file is
> considered a module. Such a .jar does not define its own module name or its own
> namespace for
> ejb-names, environment dependencies, persistence units, etc. All such namespaces
> are scoped to the
> enclosing .war file. In that sense, the packaging of enterprise bean classes in
> a WEB-INF/lib .jar is
> merely a convenience. It is semantically equivalent to packaging the classes
> within
> WEB-INF/classes."
>
>
>
>
>
> ----- Original Message ----
> From: Jarek Gawor <jg...@gmail.com>
> To: dev@openejb.apache.org
> Sent: Mon, September 20, 2010 7:07:05 PM
> Subject: Re: What kind of module is a war with ejbs inside?
>
> The spec says otherwise (section 20.4):
>
> "An enterprise bean class with a component-defining annotation defines
> an enterprise bean component when packaged within the WEB-INF/classes
> directory or in a .jar file within WEB-INF/lib. An enterprise bean can
> also be defined via WEB-INF/ejb-jar.xml or the META-INF/ejb-jar.xml
> file of a .jar file within WEB-INF/lib."
>
> Jarek
>
> On Mon, Sep 20, 2010 at 11:32 AM, Gurkan Erdogdu
> <gu...@yahoo.com> wrote:
>>>>>First of all, as according to the spec the ejb-jar.xml can be
>>>>>placed  in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
>> In Web Profile, ejb-jar.xml is only put into the WEB-INF/. Others ejb-jar.xml
>> files inside
>> WEB-INF/lib jars are not scanned or will be ignored.
>>
>> Look at , http://docs.sun.com/app/docs/doc/820-7627/bnblr?l=en&n=1&a=view
>> Packaging Enterprise Beans in WAR Modules section.
>>
>> """"""""""""""""""""""""""
>>
>> WAR modules that contain enterprise beans do not require an ejb-jar.xml
>> deployment descriptor. If the application uses ejb-jar.xml, it must be located
>> in the WAR module's WEB-INF directory.
>> JAR files that contain enterprise bean classes packaged within a WAR module
> are
>> not considered EJB JAR files, even if the bundled JAR file  conforms to the
>> format of an EJB JAR file. The enterprise beans contained within  the JAR file
>> are semantically equivalent to enterprise beans located in the  WAR module's
>> WEB-INF/classes directory, and the environment namespace of all the enterprise
>> beans are scoped to the WAR module.
>> """"""""""""""""""
>>
>> ----- Original Message ----
>> From: Jarek Gawor <jg...@gmail.com>
>> To: dev@openejb.apache.org
>> Sent: Mon, September 20, 2010 6:07:18 PM
>> Subject: Re: What kind of module is a war with ejbs inside?
>>
>> I ran into additional problems with ejbs packaged in a war file.
>> Especially, when ejbs were packaged within some jar file in a war
>> file. First of all, as according to the spec the ejb-jar.xml can be
>> placed in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
>> So we really might need to scan all jars for the ejb descriptor. Also,
>> any ejbs within any of the jars are considered part of the same 'ejb
>> module'. And right now the deployer wants to deploy each jar with ejbs
>> as a separate ejb module. I opened OPENEJB-1362 to track these
>> problems.
>>
>> I have some local code that addresses these problems which I'm testing
>> right now. It basically gets rid off the preferEjb option alltogether,
>> creates a WebModule for any war file, and always adds a single
>> EjbModule for all ejbs in a war file (if detected)
>>
>> Let me know if you see some potential problems with this.
>>
>> Thanks,
>> Jarek
>>
>> On Mon, Aug 9, 2010 at 5:28 PM, David Blevins <da...@visi.com> wrote:
>>>
>>> On Aug 7, 2010, at 10:41 PM, David Jencks wrote:
>>>
>>>> I've been working on geronimo's ejb lite support.  The way geronimo is set
> up
>>>>we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and
>>>>expect openejb to decide that any module that it finds ejbs in, whether by
>>>>finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
>>>>
>>>> Right now openejb is deciding that a module is an ejb module if it has an
>>>>ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if
>>>>there are annotated ejbs.
>>>>
>>>> I don't understand why this would be appropriate for openejb, so what I'm
>>>>provisionally implementing is:
>>>>
>>>> - provide a flag in a constructor, preferEjb
>>>> - if its true, check for ejb-jar.xml and annotated ejbs before looking for
>>>>web.xml, and if found decide the module is an ejb module
>>>> - if its is false, the current behavior, where we check for ejb-jar.xml,
> then
>>>>web.xml, then annotated ejbs.
>>>>
>>>> If the preferEjb=true behavior would be more appropriate for openejb by
>>>itself,
>>>>let me know and I'll adjust the code appropriately.
>>>
>>> Using the discoverModuleType is probably not appropriate for this setup.  In
>>>fact using the DeploymentLoader at all probably doesn't fit.  The rules more
> or
>>>less allow us to skip that:
>>>
>>>  1. if the web.xml metadata complete flag is true and there is no
>>>WEB-INF/ejb-jar.xml == not a web module with ejbs
>>>  2. else, we must be prepared to deploy ejbs
>>>
>>> Probably what we need to do is create an EjbModule object to mirror every
>>>WebModule (or the equivalent Geronimo object) if #1 is not the case.
>>>
>>> The critical part will be setting the AbstractFinder object to be the same
> one
>>>as the WebModule finder and filling in the altDD information.  It's actually
>>>pretty close to the way we do things now with creating an OpenEJB EjbModule
>>>object to match the Geronimo EjbModule object.
>>>
>>> Thoughts?
>>>
>>> -David
>>>
>>>
>>
>>
>>
>>
>
>
>
>

Re: What kind of module is a war with ejbs inside?

Posted by Gurkan Erdogdu <gu...@yahoo.com>.
Hi Jarek,

I am look at the same section, but I do not see META-INF/ejb-jar.xml, ? Am I 
looking a wrong place?

Section 20.4 of the final EJB 3.1 specification said that

"An enterprise bean class with a component-defining annotation defines an 
enterprise bean component
when packaged within the WEB-INF/classes directory or in a .jar file within 
WEB-INF/lib. An
enterprise bean can also be defined via WEB-INF/ejb-jar.xml."

A .jar file in WEB-INF/lib that contains enterprise beans is not considered an 
independent Java EE
“module” in the way that a .war file, stand-alone ejb-jar file, or an .ear-level 
ejb-jar file is
considered a module. Such a .jar does not define its own module name or its own 
namespace for
ejb-names, environment dependencies, persistence units, etc. All such namespaces 
are scoped to the
enclosing .war file. In that sense, the packaging of enterprise bean classes in 
a WEB-INF/lib .jar is
merely a convenience. It is semantically equivalent to packaging the classes 
within
WEB-INF/classes."





----- Original Message ----
From: Jarek Gawor <jg...@gmail.com>
To: dev@openejb.apache.org
Sent: Mon, September 20, 2010 7:07:05 PM
Subject: Re: What kind of module is a war with ejbs inside?

The spec says otherwise (section 20.4):

"An enterprise bean class with a component-defining annotation defines
an enterprise bean component when packaged within the WEB-INF/classes
directory or in a .jar file within WEB-INF/lib. An enterprise bean can
also be defined via WEB-INF/ejb-jar.xml or the META-INF/ejb-jar.xml
file of a .jar file within WEB-INF/lib."

Jarek

On Mon, Sep 20, 2010 at 11:32 AM, Gurkan Erdogdu
<gu...@yahoo.com> wrote:
>>>>First of all, as according to the spec the ejb-jar.xml can be
>>>>placed  in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
> In Web Profile, ejb-jar.xml is only put into the WEB-INF/. Others ejb-jar.xml
> files inside
> WEB-INF/lib jars are not scanned or will be ignored.
>
> Look at , http://docs.sun.com/app/docs/doc/820-7627/bnblr?l=en&n=1&a=view
> Packaging Enterprise Beans in WAR Modules section.
>
> """"""""""""""""""""""""""
>
> WAR modules that contain enterprise beans do not require an ejb-jar.xml
> deployment descriptor. If the application uses ejb-jar.xml, it must be located
> in the WAR module's WEB-INF directory.
> JAR files that contain enterprise bean classes packaged within a WAR module 
are
> not considered EJB JAR files, even if the bundled JAR file  conforms to the
> format of an EJB JAR file. The enterprise beans contained within  the JAR file
> are semantically equivalent to enterprise beans located in the  WAR module's
> WEB-INF/classes directory, and the environment namespace of all the enterprise
> beans are scoped to the WAR module.
> """"""""""""""""""
>
> ----- Original Message ----
> From: Jarek Gawor <jg...@gmail.com>
> To: dev@openejb.apache.org
> Sent: Mon, September 20, 2010 6:07:18 PM
> Subject: Re: What kind of module is a war with ejbs inside?
>
> I ran into additional problems with ejbs packaged in a war file.
> Especially, when ejbs were packaged within some jar file in a war
> file. First of all, as according to the spec the ejb-jar.xml can be
> placed in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
> So we really might need to scan all jars for the ejb descriptor. Also,
> any ejbs within any of the jars are considered part of the same 'ejb
> module'. And right now the deployer wants to deploy each jar with ejbs
> as a separate ejb module. I opened OPENEJB-1362 to track these
> problems.
>
> I have some local code that addresses these problems which I'm testing
> right now. It basically gets rid off the preferEjb option alltogether,
> creates a WebModule for any war file, and always adds a single
> EjbModule for all ejbs in a war file (if detected)
>
> Let me know if you see some potential problems with this.
>
> Thanks,
> Jarek
>
> On Mon, Aug 9, 2010 at 5:28 PM, David Blevins <da...@visi.com> wrote:
>>
>> On Aug 7, 2010, at 10:41 PM, David Jencks wrote:
>>
>>> I've been working on geronimo's ejb lite support.  The way geronimo is set 
up
>>>we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and
>>>expect openejb to decide that any module that it finds ejbs in, whether by
>>>finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
>>>
>>> Right now openejb is deciding that a module is an ejb module if it has an
>>>ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if
>>>there are annotated ejbs.
>>>
>>> I don't understand why this would be appropriate for openejb, so what I'm
>>>provisionally implementing is:
>>>
>>> - provide a flag in a constructor, preferEjb
>>> - if its true, check for ejb-jar.xml and annotated ejbs before looking for
>>>web.xml, and if found decide the module is an ejb module
>>> - if its is false, the current behavior, where we check for ejb-jar.xml, 
then
>>>web.xml, then annotated ejbs.
>>>
>>> If the preferEjb=true behavior would be more appropriate for openejb by 
>>itself,
>>>let me know and I'll adjust the code appropriately.
>>
>> Using the discoverModuleType is probably not appropriate for this setup.  In
>>fact using the DeploymentLoader at all probably doesn't fit.  The rules more 
or
>>less allow us to skip that:
>>
>>  1. if the web.xml metadata complete flag is true and there is no
>>WEB-INF/ejb-jar.xml == not a web module with ejbs
>>  2. else, we must be prepared to deploy ejbs
>>
>> Probably what we need to do is create an EjbModule object to mirror every
>>WebModule (or the equivalent Geronimo object) if #1 is not the case.
>>
>> The critical part will be setting the AbstractFinder object to be the same 
one
>>as the WebModule finder and filling in the altDD information.  It's actually
>>pretty close to the way we do things now with creating an OpenEJB EjbModule
>>object to match the Geronimo EjbModule object.
>>
>> Thoughts?
>>
>> -David
>>
>>
>
>
>
>




Re: What kind of module is a war with ejbs inside?

Posted by Jarek Gawor <jg...@gmail.com>.
The spec says otherwise (section 20.4):

"An enterprise bean class with a component-defining annotation defines
an enterprise bean component when packaged within the WEB-INF/classes
directory or in a .jar file within WEB-INF/lib. An enterprise bean can
also be defined via WEB-INF/ejb-jar.xml or the META-INF/ejb-jar.xml
file of a .jar file within WEB-INF/lib."

Jarek

On Mon, Sep 20, 2010 at 11:32 AM, Gurkan Erdogdu
<gu...@yahoo.com> wrote:
>>>>First of all, as according to the spec the ejb-jar.xml can be
>>>>placed  in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
> In Web Profile, ejb-jar.xml is only put into the WEB-INF/. Others ejb-jar.xml
> files inside
> WEB-INF/lib jars are not scanned or will be ignored.
>
> Look at , http://docs.sun.com/app/docs/doc/820-7627/bnblr?l=en&n=1&a=view
> Packaging Enterprise Beans in WAR Modules section.
>
> """"""""""""""""""""""""""
>
> WAR modules that contain enterprise beans do not require an ejb-jar.xml
> deployment descriptor. If the application uses ejb-jar.xml, it must be located
> in the WAR module's WEB-INF directory.
> JAR files that contain enterprise bean classes packaged within a WAR module are
> not considered EJB JAR files, even if the bundled JAR file  conforms to the
> format of an EJB JAR file. The enterprise beans contained within  the JAR file
> are semantically equivalent to enterprise beans located in the  WAR module's
> WEB-INF/classes directory, and the environment namespace of all the enterprise
> beans are scoped to the WAR module.
> """"""""""""""""""
>
> ----- Original Message ----
> From: Jarek Gawor <jg...@gmail.com>
> To: dev@openejb.apache.org
> Sent: Mon, September 20, 2010 6:07:18 PM
> Subject: Re: What kind of module is a war with ejbs inside?
>
> I ran into additional problems with ejbs packaged in a war file.
> Especially, when ejbs were packaged within some jar file in a war
> file. First of all, as according to the spec the ejb-jar.xml can be
> placed in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
> So we really might need to scan all jars for the ejb descriptor. Also,
> any ejbs within any of the jars are considered part of the same 'ejb
> module'. And right now the deployer wants to deploy each jar with ejbs
> as a separate ejb module. I opened OPENEJB-1362 to track these
> problems.
>
> I have some local code that addresses these problems which I'm testing
> right now. It basically gets rid off the preferEjb option alltogether,
> creates a WebModule for any war file, and always adds a single
> EjbModule for all ejbs in a war file (if detected)
>
> Let me know if you see some potential problems with this.
>
> Thanks,
> Jarek
>
> On Mon, Aug 9, 2010 at 5:28 PM, David Blevins <da...@visi.com> wrote:
>>
>> On Aug 7, 2010, at 10:41 PM, David Jencks wrote:
>>
>>> I've been working on geronimo's ejb lite support.  The way geronimo is set up
>>>we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and
>>>expect openejb to decide that any module that it finds ejbs in, whether by
>>>finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
>>>
>>> Right now openejb is deciding that a module is an ejb module if it has an
>>>ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if
>>>there are annotated ejbs.
>>>
>>> I don't understand why this would be appropriate for openejb, so what I'm
>>>provisionally implementing is:
>>>
>>> - provide a flag in a constructor, preferEjb
>>> - if its true, check for ejb-jar.xml and annotated ejbs before looking for
>>>web.xml, and if found decide the module is an ejb module
>>> - if its is false, the current behavior, where we check for ejb-jar.xml, then
>>>web.xml, then annotated ejbs.
>>>
>>> If the preferEjb=true behavior would be more appropriate for openejb by itself,
>>>let me know and I'll adjust the code appropriately.
>>
>> Using the discoverModuleType is probably not appropriate for this setup.  In
>>fact using the DeploymentLoader at all probably doesn't fit.  The rules more or
>>less allow us to skip that:
>>
>>  1. if the web.xml metadata complete flag is true and there is no
>>WEB-INF/ejb-jar.xml == not a web module with ejbs
>>  2. else, we must be prepared to deploy ejbs
>>
>> Probably what we need to do is create an EjbModule object to mirror every
>>WebModule (or the equivalent Geronimo object) if #1 is not the case.
>>
>> The critical part will be setting the AbstractFinder object to be the same one
>>as the WebModule finder and filling in the altDD information.  It's actually
>>pretty close to the way we do things now with creating an OpenEJB EjbModule
>>object to match the Geronimo EjbModule object.
>>
>> Thoughts?
>>
>> -David
>>
>>
>
>
>
>

Re: What kind of module is a war with ejbs inside?

Posted by Gurkan Erdogdu <gu...@yahoo.com>.
>>>First of all, as according to the spec the ejb-jar.xml can be
>>>placed  in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
In Web Profile, ejb-jar.xml is only put into the WEB-INF/. Others ejb-jar.xml 
files inside
WEB-INF/lib jars are not scanned or will be ignored.

Look at , http://docs.sun.com/app/docs/doc/820-7627/bnblr?l=en&n=1&a=view 
Packaging Enterprise Beans in WAR Modules section.

""""""""""""""""""""""""""

WAR modules that contain enterprise beans do not require an ejb-jar.xml 
deployment descriptor. If the application uses ejb-jar.xml, it must be located 
in the WAR module's WEB-INF directory.
JAR files that contain enterprise bean classes packaged within a WAR module are 
not considered EJB JAR files, even if the bundled JAR file  conforms to the 
format of an EJB JAR file. The enterprise beans contained within  the JAR file 
are semantically equivalent to enterprise beans located in the  WAR module's 
WEB-INF/classes directory, and the environment namespace of all the enterprise 
beans are scoped to the WAR module.
""""""""""""""""""

----- Original Message ----
From: Jarek Gawor <jg...@gmail.com>
To: dev@openejb.apache.org
Sent: Mon, September 20, 2010 6:07:18 PM
Subject: Re: What kind of module is a war with ejbs inside?

I ran into additional problems with ejbs packaged in a war file.
Especially, when ejbs were packaged within some jar file in a war
file. First of all, as according to the spec the ejb-jar.xml can be
placed in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
So we really might need to scan all jars for the ejb descriptor. Also,
any ejbs within any of the jars are considered part of the same 'ejb
module'. And right now the deployer wants to deploy each jar with ejbs
as a separate ejb module. I opened OPENEJB-1362 to track these
problems.

I have some local code that addresses these problems which I'm testing
right now. It basically gets rid off the preferEjb option alltogether,
creates a WebModule for any war file, and always adds a single
EjbModule for all ejbs in a war file (if detected)

Let me know if you see some potential problems with this.

Thanks,
Jarek

On Mon, Aug 9, 2010 at 5:28 PM, David Blevins <da...@visi.com> wrote:
>
> On Aug 7, 2010, at 10:41 PM, David Jencks wrote:
>
>> I've been working on geronimo's ejb lite support.  The way geronimo is set up 
>>we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and 
>>expect openejb to decide that any module that it finds ejbs in, whether by 
>>finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
>>
>> Right now openejb is deciding that a module is an ejb module if it has an 
>>ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if 
>>there are annotated ejbs.
>>
>> I don't understand why this would be appropriate for openejb, so what I'm 
>>provisionally implementing is:
>>
>> - provide a flag in a constructor, preferEjb
>> - if its true, check for ejb-jar.xml and annotated ejbs before looking for 
>>web.xml, and if found decide the module is an ejb module
>> - if its is false, the current behavior, where we check for ejb-jar.xml, then 
>>web.xml, then annotated ejbs.
>>
>> If the preferEjb=true behavior would be more appropriate for openejb by itself, 
>>let me know and I'll adjust the code appropriately.
>
> Using the discoverModuleType is probably not appropriate for this setup.  In 
>fact using the DeploymentLoader at all probably doesn't fit.  The rules more or 
>less allow us to skip that:
>
>  1. if the web.xml metadata complete flag is true and there is no 
>WEB-INF/ejb-jar.xml == not a web module with ejbs
>  2. else, we must be prepared to deploy ejbs
>
> Probably what we need to do is create an EjbModule object to mirror every 
>WebModule (or the equivalent Geronimo object) if #1 is not the case.
>
> The critical part will be setting the AbstractFinder object to be the same one 
>as the WebModule finder and filling in the altDD information.  It's actually 
>pretty close to the way we do things now with creating an OpenEJB EjbModule 
>object to match the Geronimo EjbModule object.
>
> Thoughts?
>
> -David
>
>




Re: What kind of module is a war with ejbs inside?

Posted by Jarek Gawor <jg...@gmail.com>.
I ran into additional problems with ejbs packaged in a war file.
Especially, when ejbs were packaged within some jar file in a war
file. First of all, as according to the spec the ejb-jar.xml can be
placed in WEB-INF/ejb-jar.xml or within any jar file in WEB-INF/lib.
So we really might need to scan all jars for the ejb descriptor. Also,
any ejbs within any of the jars are considered part of the same 'ejb
module'. And right now the deployer wants to deploy each jar with ejbs
as a separate ejb module. I opened OPENEJB-1362 to track these
problems.

I have some local code that addresses these problems which I'm testing
right now. It basically gets rid off the preferEjb option alltogether,
creates a WebModule for any war file, and always adds a single
EjbModule for all ejbs in a war file (if detected)

Let me know if you see some potential problems with this.

Thanks,
Jarek

On Mon, Aug 9, 2010 at 5:28 PM, David Blevins <da...@visi.com> wrote:
>
> On Aug 7, 2010, at 10:41 PM, David Jencks wrote:
>
>> I've been working on geronimo's ejb lite support.  The way geronimo is set up we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and expect openejb to decide that any module that it finds ejbs in, whether by finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
>>
>> Right now openejb is deciding that a module is an ejb module if it has an ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if there are annotated ejbs.
>>
>> I don't understand why this would be appropriate for openejb, so what I'm provisionally implementing is:
>>
>> - provide a flag in a constructor, preferEjb
>> - if its true, check for ejb-jar.xml and annotated ejbs before looking for web.xml, and if found decide the module is an ejb module
>> - if its is false, the current behavior, where we check for ejb-jar.xml, then web.xml, then annotated ejbs.
>>
>> If the preferEjb=true behavior would be more appropriate for openejb by itself, let me know and I'll adjust the code appropriately.
>
> Using the discoverModuleType is probably not appropriate for this setup.  In fact using the DeploymentLoader at all probably doesn't fit.  The rules more or less allow us to skip that:
>
>  1. if the web.xml metadata complete flag is true and there is no WEB-INF/ejb-jar.xml == not a web module with ejbs
>  2. else, we must be prepared to deploy ejbs
>
> Probably what we need to do is create an EjbModule object to mirror every WebModule (or the equivalent Geronimo object) if #1 is not the case.
>
> The critical part will be setting the AbstractFinder object to be the same one as the WebModule finder and filling in the altDD information.  It's actually pretty close to the way we do things now with creating an OpenEJB EjbModule object to match the Geronimo EjbModule object.
>
> Thoughts?
>
> -David
>
>

Re: What kind of module is a war with ejbs inside?

Posted by David Blevins <da...@visi.com>.
On Aug 7, 2010, at 10:41 PM, David Jencks wrote:

> I've been working on geronimo's ejb lite support.  The way geronimo is set up we tell DeploymentLoader to look in META-INF or WEB-INF for ejb-jar.xml, and expect openejb to decide that any module that it finds ejbs in, whether by finding an ejb-jar.xml or by finding annotated classes, is an ejb module.
> 
> Right now openejb is deciding that a module is an ejb module if it has an ejb-jar.xml, but a web module if it has a web.xml but no ejb-jar.xml, even if there are annotated ejbs.
> 
> I don't understand why this would be appropriate for openejb, so what I'm provisionally implementing is:
> 
> - provide a flag in a constructor, preferEjb
> - if its true, check for ejb-jar.xml and annotated ejbs before looking for web.xml, and if found decide the module is an ejb module
> - if its is false, the current behavior, where we check for ejb-jar.xml, then web.xml, then annotated ejbs.
> 
> If the preferEjb=true behavior would be more appropriate for openejb by itself, let me know and I'll adjust the code appropriately.

Using the discoverModuleType is probably not appropriate for this setup.  In fact using the DeploymentLoader at all probably doesn't fit.  The rules more or less allow us to skip that:

  1. if the web.xml metadata complete flag is true and there is no WEB-INF/ejb-jar.xml == not a web module with ejbs
  2. else, we must be prepared to deploy ejbs

Probably what we need to do is create an EjbModule object to mirror every WebModule (or the equivalent Geronimo object) if #1 is not the case.

The critical part will be setting the AbstractFinder object to be the same one as the WebModule finder and filling in the altDD information.  It's actually pretty close to the way we do things now with creating an OpenEJB EjbModule object to match the Geronimo EjbModule object.

Thoughts?

-David