You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Zog <jo...@gmail.com> on 2008/10/09 21:08:13 UTC
OpenEJB in an OSGi container
Hi
So, I managed to get my EJB app running just fine in Tomcat/OpeneEJB. Now
that it validates the J2EE support I need from OpenEJB, I'd like to move all
this
to an OSGi container.
Any hints on where I should look for information ?
I scanned through the web and although it's stated everywhere that OpenEJB
is packaged as OSGi bundled, I couldn't find information on how to start
openejb
in osgi.
I tried a simple approach where I load everything in openejb/lib from the
system classpath,
but got a mysterious exception:
Caused by: org.apache.openejb.core.ivm.naming.NamingException: Cannot
initailize
OpenEJB: null
at
org.apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
JB(InitContextFactory.java:88)
at
org.apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
xt(InitContextFactory.java:35)
at
org.apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
t(LocalInitialContextFactory.java:114)
That's most probably related to the way OSGi does classloading, and I'm
investigating.
Should I look at the way you embedded OpenEJB for Tomcat ? Or should I look
elsewhere ?
Any clue welcomed :)
/Zog
PS: Btw, finding http://openejb.apache.org/apidocs is not very easy on the
openejb site -
I had to scan through the forums to find that one.
--
View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: OpenEJB in an OSGi container
Posted by Henri Gomez <he...@gmail.com>.
>
> Succeeded to load OpenEJB in Felix 1.2.1 OSGi container.
> See
> https://issues.apache.org/jira/browse/OPENEJB-921
> for details.
> It's not perfect but it fits my needs (for now - just had to produce
> a proof of concept).
> /zog
What about a wiki/blob about this Proof Of Concept.
Good works !
Re: OpenEJB in an OSGi container
Posted by Zog <jo...@gmail.com>.
Succeeded to load OpenEJB in Felix 1.2.1 OSGi container.
See
https://issues.apache.org/jira/browse/OPENEJB-921
for details.
It's not perfect but it fits my needs (for now - just had to produce
a proof of concept).
/zog
Zog wrote:
>
> Thought I should give a first update here:
> I took the approach to package the whole OpenEJB (except the javaee jar)
> inside a single bundle,
> trying to run from inside OSGi but still configuring from
> openejb.home/conf/openejb.xml and
> loading my EJBs from openejb.home/apps.
> I did 2 things:
> - created an osgi bundle with proper Import-Package and Bundle-Classpath
> entries
> (classpath contains the whole openejb/lib minus javaee)
> - dropped openejb installation in a local './openejb' dir
> - used adapted code from Guillaume OpenEjbFactory to load openejb in my
> bundle activator:
> properties = new Properties();
> properties.put("openejb.home", "./openejb");
> properties.put("openejb.base", "./openejb");
> properties.put("openejb.configuration",
> "./openejb/conf/openejb.xml");
> properties.put("openejb.deployments.classpath.include", " ");
> properties.put("openejb.deployments.classpath", "true");
>
> properties.put("openejb.deployments.classpath.filter.system.apps",
> "false");
> SystemInstance system = SystemInstance.get();
>
> ApplicationServer appServer = new ServerFederation();
> system.setComponent(ApplicationServer.class, appServer);
>
> Assembler assembler = new Assembler();
>
> SystemInstance.get().setComponent(org.apache.openejb.spi.Assembler.class,
> assembler);
> Properties props = new Properties();
> props.putAll(system.getProperties());
> props.putAll(properties);
> assembler.init(props);
> assembler.build();
>
> This works almost ok, BUT
> - because OpenEJB expect resources to be accessible through jars URLs, the
> openejb-core-3.0.jar EJBs do not load. Actually, if I use the default
> empty value for
> openejb.deployments.classpath.include, I get a NPE in
> DeploymentLoader.getWebDescriptors
> because the META-INF dirs have classpath URLs that look like
> 'bundle://5.0:1/META-INF" - looks
> like xbean ResourceFinder doesn't work well in OSGi - will look into it.
> - JNDI tree doesn't seem to be working well: I can find my beans, but not
> my datasources and
> openejb/ subcontext is missing.
>
> I attach the log in case someone want to have a look.
>
> http://www.nabble.com/file/p19924199/openejb.log openejb.log
>
>
>
>
--
View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19977951.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: OpenEJB in an OSGi container
Posted by Zog <jo...@gmail.com>.
Thought I should give a first update here:
I took the approach to package the whole OpenEJB (except the javaee jar)
inside a single bundle,
trying to run from inside OSGi but still configuring from
openejb.home/conf/openejb.xml and
loading my EJBs from openejb.home/apps.
I did 2 things:
- created an osgi bundle with proper Import-Package and Bundle-Classpath
entries
(classpath contains the whole openejb/lib minus javaee)
- dropped openejb installation in a local './openejb' dir
- used adapted code from Guillaume OpenEjbFactory to load openejb in my
bundle activator:
properties = new Properties();
properties.put("openejb.home", "./openejb");
properties.put("openejb.base", "./openejb");
properties.put("openejb.configuration",
"./openejb/conf/openejb.xml");
properties.put("openejb.deployments.classpath.include", " ");
properties.put("openejb.deployments.classpath", "true");
properties.put("openejb.deployments.classpath.filter.system.apps",
"false");
SystemInstance system = SystemInstance.get();
ApplicationServer appServer = new ServerFederation();
system.setComponent(ApplicationServer.class, appServer);
Assembler assembler = new Assembler();
SystemInstance.get().setComponent(org.apache.openejb.spi.Assembler.class,
assembler);
Properties props = new Properties();
props.putAll(system.getProperties());
props.putAll(properties);
assembler.init(props);
assembler.build();
This works almost ok, BUT
- because OpenEJB expect resources to be accessible through jars URLs, the
openejb-core-3.0.jar EJBs do not load. Actually, if I use the default empty
value for
openejb.deployments.classpath.include, I get a NPE in
DeploymentLoader.getWebDescriptors
because the META-INF dirs have classpath URLs that look like
'bundle://5.0:1/META-INF" - looks
like xbean ResourceFinder doesn't work well in OSGi - will look into it.
- JNDI tree doesn't seem to be working well: I can find my beans, but not my
datasources and
openejb/ subcontext is missing.
I attach the log in case someone want to have a look.
http://www.nabble.com/file/p19924199/openejb.log openejb.log
--
View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19924199.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: OpenEJB in an OSGi container
Posted by Zog <jo...@gmail.com>.
I'm using apache Felix 1.2.1 with OSGi 1.4.
I've no code to share yet - I started on this just recently and am still in
information gathering mode :) but for sure I'll share this
once I get it to work.
Thanks a lot for the help
/Zog
David Blevins wrote:
>
> Thanks, Guillaume. That gives me a pretty good idea on what the
> pieces are.
>
> Zog, let me know what OSGi kernel and version you're using and I'll
> see if I can't whip up some boot code for you. If you've got any
> starter code you can share, feel free to zip it up and attach it do a
> JIRA (created a jira for you here
> https://issues.apache.org/jira/browse/OPENEJB-921)
>
> -David
>
>
> On Oct 9, 2008, at 2:47 PM, Guillaume Nodet wrote:
>
>> It's been a long time since I work on that and I still have not found
>> the time to continue this integration work.
>> Anyway, the code I used is available at:
>> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/
>> ejb3
>> It uses a spring-powered bundle to set up OpenEJB:
>>
>> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/resources/META-INF/spring/openejb-spring.xml
>> and the related java classes are available at:
>>
>> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/java/org/apache/servicemix/ejb3/deployer/
>>
>> Unfortunately, this may be a bit outdated :-(
>>
>> Anyway, the idea was to be able to listen to newly installed bundles
>> and discover EJB inside those so that they are automatically
>> configured as plain EJB or web services.
>> Though, this was in the context of ServiceMix, where the EJBs were to
>> be exposed on the JBI bus and eventually through HTTP/SOAP too.
>>
>> On Thu, Oct 9, 2008 at 9:26 PM, David Blevins
>> <da...@visi.com> wrote:
>>> Guillaume is the one who's done most the work in this area in
>>> regards to his
>>> use of OpenEJB in the OSGi-based ServiceMix 4.
>>>
>>> What boot technique did you use in ServieMix?
>>>
>>>
>>> -David
>>>
>>>
>>> On Oct 9, 2008, at 2:08 PM, Zog wrote:
>>>
>>>>
>>>> Hi
>>>> So, I managed to get my EJB app running just fine in Tomcat/
>>>> OpeneEJB. Now
>>>> that it validates the J2EE support I need from OpenEJB, I'd like
>>>> to move
>>>> all
>>>> this
>>>> to an OSGi container.
>>>> Any hints on where I should look for information ?
>>>> I scanned through the web and although it's stated everywhere that
>>>> OpenEJB
>>>> is packaged as OSGi bundled, I couldn't find information on how to
>>>> start
>>>> openejb
>>>> in osgi.
>>>> I tried a simple approach where I load everything in openejb/lib
>>>> from the
>>>> system classpath,
>>>> but got a mysterious exception:
>>>> Caused by: org.apache.openejb.core.ivm.naming.NamingException:
>>>> Cannot
>>>> initailize
>>>> OpenEJB: null
>>>> at
>>>> org
>>>> .apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
>>>> JB(InitContextFactory.java:88)
>>>> at
>>>> org
>>>> .apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
>>>> xt(InitContextFactory.java:35)
>>>> at
>>>> org
>>>> .apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
>>>> t(LocalInitialContextFactory.java:114)
>>>>
>>>> That's most probably related to the way OSGi does classloading,
>>>> and I'm
>>>> investigating.
>>>>
>>>> Should I look at the way you embedded OpenEJB for Tomcat ? Or
>>>> should I
>>>> look
>>>> elsewhere ?
>>>> Any clue welcomed :)
>>>> /Zog
>>>>
>>>> PS: Btw, finding http://openejb.apache.org/apidocs is not very
>>>> easy on the
>>>> openejb site -
>>>> I had to scan through the forums to find that one.
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
>>>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://open.iona.com
>>
>
>
>
--
View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19907692.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: OpenEJB in an OSGi container
Posted by David Blevins <da...@visi.com>.
Thanks, Guillaume. That gives me a pretty good idea on what the
pieces are.
Zog, let me know what OSGi kernel and version you're using and I'll
see if I can't whip up some boot code for you. If you've got any
starter code you can share, feel free to zip it up and attach it do a
JIRA (created a jira for you here https://issues.apache.org/jira/browse/OPENEJB-921)
-David
On Oct 9, 2008, at 2:47 PM, Guillaume Nodet wrote:
> It's been a long time since I work on that and I still have not found
> the time to continue this integration work.
> Anyway, the code I used is available at:
> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/
> ejb3
> It uses a spring-powered bundle to set up OpenEJB:
> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/resources/META-INF/spring/openejb-spring.xml
> and the related java classes are available at:
> http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/java/org/apache/servicemix/ejb3/deployer/
>
> Unfortunately, this may be a bit outdated :-(
>
> Anyway, the idea was to be able to listen to newly installed bundles
> and discover EJB inside those so that they are automatically
> configured as plain EJB or web services.
> Though, this was in the context of ServiceMix, where the EJBs were to
> be exposed on the JBI bus and eventually through HTTP/SOAP too.
>
> On Thu, Oct 9, 2008 at 9:26 PM, David Blevins
> <da...@visi.com> wrote:
>> Guillaume is the one who's done most the work in this area in
>> regards to his
>> use of OpenEJB in the OSGi-based ServiceMix 4.
>>
>> What boot technique did you use in ServieMix?
>>
>>
>> -David
>>
>>
>> On Oct 9, 2008, at 2:08 PM, Zog wrote:
>>
>>>
>>> Hi
>>> So, I managed to get my EJB app running just fine in Tomcat/
>>> OpeneEJB. Now
>>> that it validates the J2EE support I need from OpenEJB, I'd like
>>> to move
>>> all
>>> this
>>> to an OSGi container.
>>> Any hints on where I should look for information ?
>>> I scanned through the web and although it's stated everywhere that
>>> OpenEJB
>>> is packaged as OSGi bundled, I couldn't find information on how to
>>> start
>>> openejb
>>> in osgi.
>>> I tried a simple approach where I load everything in openejb/lib
>>> from the
>>> system classpath,
>>> but got a mysterious exception:
>>> Caused by: org.apache.openejb.core.ivm.naming.NamingException:
>>> Cannot
>>> initailize
>>> OpenEJB: null
>>> at
>>> org
>>> .apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
>>> JB(InitContextFactory.java:88)
>>> at
>>> org
>>> .apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
>>> xt(InitContextFactory.java:35)
>>> at
>>> org
>>> .apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
>>> t(LocalInitialContextFactory.java:114)
>>>
>>> That's most probably related to the way OSGi does classloading,
>>> and I'm
>>> investigating.
>>>
>>> Should I look at the way you embedded OpenEJB for Tomcat ? Or
>>> should I
>>> look
>>> elsewhere ?
>>> Any clue welcomed :)
>>> /Zog
>>>
>>> PS: Btw, finding http://openejb.apache.org/apidocs is not very
>>> easy on the
>>> openejb site -
>>> I had to scan through the forums to find that one.
>>> --
>>> View this message in context:
>>> http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
>>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://open.iona.com
>
Re: OpenEJB in an OSGi container
Posted by Guillaume Nodet <gn...@gmail.com>.
It's been a long time since I work on that and I still have not found
the time to continue this integration work.
Anyway, the code I used is available at:
http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3
It uses a spring-powered bundle to set up OpenEJB:
http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/resources/META-INF/spring/openejb-spring.xml
and the related java classes are available at:
http://svn.apache.org/repos/asf/servicemix/smx4/features/branches/ejb3/deployer/src/main/java/org/apache/servicemix/ejb3/deployer/
Unfortunately, this may be a bit outdated :-(
Anyway, the idea was to be able to listen to newly installed bundles
and discover EJB inside those so that they are automatically
configured as plain EJB or web services.
Though, this was in the context of ServiceMix, where the EJBs were to
be exposed on the JBI bus and eventually through HTTP/SOAP too.
On Thu, Oct 9, 2008 at 9:26 PM, David Blevins <da...@visi.com> wrote:
> Guillaume is the one who's done most the work in this area in regards to his
> use of OpenEJB in the OSGi-based ServiceMix 4.
>
> What boot technique did you use in ServieMix?
>
>
> -David
>
>
> On Oct 9, 2008, at 2:08 PM, Zog wrote:
>
>>
>> Hi
>> So, I managed to get my EJB app running just fine in Tomcat/OpeneEJB. Now
>> that it validates the J2EE support I need from OpenEJB, I'd like to move
>> all
>> this
>> to an OSGi container.
>> Any hints on where I should look for information ?
>> I scanned through the web and although it's stated everywhere that OpenEJB
>> is packaged as OSGi bundled, I couldn't find information on how to start
>> openejb
>> in osgi.
>> I tried a simple approach where I load everything in openejb/lib from the
>> system classpath,
>> but got a mysterious exception:
>> Caused by: org.apache.openejb.core.ivm.naming.NamingException: Cannot
>> initailize
>> OpenEJB: null
>> at
>> org.apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
>> JB(InitContextFactory.java:88)
>> at
>> org.apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
>> xt(InitContextFactory.java:35)
>> at
>> org.apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
>> t(LocalInitialContextFactory.java:114)
>>
>> That's most probably related to the way OSGi does classloading, and I'm
>> investigating.
>>
>> Should I look at the way you embedded OpenEJB for Tomcat ? Or should I
>> look
>> elsewhere ?
>> Any clue welcomed :)
>> /Zog
>>
>> PS: Btw, finding http://openejb.apache.org/apidocs is not very easy on the
>> openejb site -
>> I had to scan through the forums to find that one.
>> --
>> View this message in context:
>> http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>
>>
>
>
--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://open.iona.com
Re: OpenEJB in an OSGi container
Posted by Zog <jo...@gmail.com>.
(in case that was for me and not for Guillaume N): I'm not using servicemix -
I'd like
to have openejb running in a plain barebone Felix installation. That would
be the
start, then I'd take a look at how to deploy ejbs in there (i.e. directly
via the
openeejb conf or as bundles like Guillaume has done).
David Blevins wrote:
>
> Guillaume is the one who's done most the work in this area in regards
> to his use of OpenEJB in the OSGi-based ServiceMix 4.
>
> What boot technique did you use in ServieMix?
>
>
> -David
>
>
> On Oct 9, 2008, at 2:08 PM, Zog wrote:
>
>>
>> Hi
>> So, I managed to get my EJB app running just fine in Tomcat/
>> OpeneEJB. Now
>> that it validates the J2EE support I need from OpenEJB, I'd like to
>> move all
>> this
>> to an OSGi container.
>> Any hints on where I should look for information ?
>> I scanned through the web and although it's stated everywhere that
>> OpenEJB
>> is packaged as OSGi bundled, I couldn't find information on how to
>> start
>> openejb
>> in osgi.
>> I tried a simple approach where I load everything in openejb/lib
>> from the
>> system classpath,
>> but got a mysterious exception:
>> Caused by: org.apache.openejb.core.ivm.naming.NamingException: Cannot
>> initailize
>> OpenEJB: null
>> at
>> org.apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
>> JB(InitContextFactory.java:88)
>> at
>> org.apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
>> xt(InitContextFactory.java:35)
>> at
>> org.apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
>> t(LocalInitialContextFactory.java:114)
>>
>> That's most probably related to the way OSGi does classloading, and
>> I'm
>> investigating.
>>
>> Should I look at the way you embedded OpenEJB for Tomcat ? Or should
>> I look
>> elsewhere ?
>> Any clue welcomed :)
>> /Zog
>>
>> PS: Btw, finding http://openejb.apache.org/apidocs is not very easy
>> on the
>> openejb site -
>> I had to scan through the forums to find that one.
>> --
>> View this message in context:
>> http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>
>>
>
>
>
--
View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905846.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: OpenEJB in an OSGi container
Posted by David Blevins <da...@visi.com>.
Guillaume is the one who's done most the work in this area in regards
to his use of OpenEJB in the OSGi-based ServiceMix 4.
What boot technique did you use in ServieMix?
-David
On Oct 9, 2008, at 2:08 PM, Zog wrote:
>
> Hi
> So, I managed to get my EJB app running just fine in Tomcat/
> OpeneEJB. Now
> that it validates the J2EE support I need from OpenEJB, I'd like to
> move all
> this
> to an OSGi container.
> Any hints on where I should look for information ?
> I scanned through the web and although it's stated everywhere that
> OpenEJB
> is packaged as OSGi bundled, I couldn't find information on how to
> start
> openejb
> in osgi.
> I tried a simple approach where I load everything in openejb/lib
> from the
> system classpath,
> but got a mysterious exception:
> Caused by: org.apache.openejb.core.ivm.naming.NamingException: Cannot
> initailize
> OpenEJB: null
> at
> org.apache.openejb.core.ivm.naming.InitContextFactory.initializeOpenE
> JB(InitContextFactory.java:88)
> at
> org.apache.openejb.core.ivm.naming.InitContextFactory.getInitialConte
> xt(InitContextFactory.java:35)
> at
> org.apache.openejb.client.LocalInitialContextFactory.getIntraVmContex
> t(LocalInitialContextFactory.java:114)
>
> That's most probably related to the way OSGi does classloading, and
> I'm
> investigating.
>
> Should I look at the way you embedded OpenEJB for Tomcat ? Or should
> I look
> elsewhere ?
> Any clue welcomed :)
> /Zog
>
> PS: Btw, finding http://openejb.apache.org/apidocs is not very easy
> on the
> openejb site -
> I had to scan through the forums to find that one.
> --
> View this message in context: http://www.nabble.com/OpenEJB-in-an-OSGi-container-tp19905326p19905326.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>
>