Skip to main content

Unable to get an OSGi modular application working in GF 3.1.2.2 FP

1 reply [Last post]
alexweirig
Offline
Joined: 2012-11-08
Points: 0

Hello,

I'm trying to implement my first OSGi hybrid application with GF 3.1.2.2. This is what I would like the design to be like:
1 OGSi bundle with my API
contains Java Intefaces

1 OSGi bundle with the implementation
contains @Stateless annotated POJO, Manifest.MF contains Export-EJB: ALL

1 OSGi bundle with the domain classes
contains @Entity classes for JPA2 persistency

1 OSGi web application bundle to expose the business logic as Servlet or Web Service
should contain @WebService or @WebServlet annotated classes
contains an beans.xml file
I use @Inject @OSGiService(dynamic=true) to inject my EJB exported service into the code

I've no problem to develop (Eclipse Indigo) the 3 first bundles. I export the 3 bundles as JAR files and deploy them in {GF-HOME}/domains/domain1/autodeploy/bundles
In the Felix Remote shell my bundles are deployed and marked as active.

Unfortunately I don't know how to get the last bundles (WAB) working.
When I export as JAR file, I don't know where to find the WSDL definition for the WebService. In the web admin console, there's no WebService entry (because it's OSGi bundle).
When I deploy as WAR file, I see the application in the Web Admin console, I can see the WSDL and even the WS tester but the injected service is always NULL.

I happen to get the following stack trace in the server.log:

[#|2012-11-08T12:32:31.174+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Installed /Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]

[#|2012-11-08T12:32:31.176+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Started bundle: file:/Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]

[#|2012-11-08T12:32:31.176+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Started bundle: file:/Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]

[#|2012-11-08T12:32:31.182+0100|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Expanded at file:/var/folders/8m/p4qtrs0s39g0k1z99h8ll7_80000gp/T/osgiapp5009226054725074508/|#]

[#|2012-11-08T12:32:31.225+0100|SEVERE|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Exception while invoking class org.glassfish.weld.WeldDeployer load method
java.lang.NullPointerException
at org.glassfish.weld.BeanDeploymentArchiveImpl.handleEntry(BeanDeploymentArchiveImpl.java:504)
at org.glassfish.weld.BeanDeploymentArchiveImpl.collectJarInfo(BeanDeploymentArchiveImpl.java:482)
at org.glassfish.weld.BeanDeploymentArchiveImpl.populate(BeanDeploymentArchiveImpl.java:422)
at org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:148)
at org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:128)
at org.glassfish.weld.DeploymentImpl.(DeploymentImpl.java:121)
at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:386)
at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:100)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:183)
at org.glassfish.osgijavaeebase.OSGiDeploymentRequest.execute(OSGiDeploymentRequest.java:118)
at org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:121)
at org.glassfish.osgijavaeebase.OSGiContainer.deploy(OSGiContainer.java:154)
at org.glassfish.osgijavaeebase.JavaEEExtender.deploy(JavaEEExtender.java:107)
at org.glassfish.osgijavaeebase.JavaEEExtender.access$200(JavaEEExtender.java:61)
at org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:151)
at org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:148)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
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:680)
|#]

[#|2012-11-08T12:32:31.226+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=20;_ThreadName=Thread-3;|Exception while loading the app|#]

[#|2012-11-08T12:32:31.231+0100|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Deleted /var/folders/8m/p4qtrs0s39g0k1z99h8ll7_80000gp/T/osgiapp5009226054725074508|#]

[#|2012-11-08T12:32:31.231+0100|SEVERE|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Failed while deploying bundle lu.tlk.schoolresorts.ws [313]|#]

[#|2012-11-08T12:32:31.231+0100|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=20;_ThreadName=Thread-3;|Removed bundle 313 against context path /lu.tlk.schoolresorts.ws |#]

[#|2012-11-08T12:32:31.231+0100|WARNING|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Failed to deploy bundle lu.tlk.schoolresorts.ws [313]
org.glassfish.osgijavaeebase.DeploymentException: Deployment of lu.tlk.schoolresorts.ws [313] failed because of following reason: Failed while deploying bundle lu.tlk.schoolresorts.ws [313] : java.lang.RuntimeException: Failed to deploy bundle [ lu.tlk.schoolresorts.ws [313] ], root cause: Exception while loading the app
at org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:125)
at org.glassfish.osgijavaeebase.OSGiContainer.deploy(OSGiContainer.java:154)
at org.glassfish.osgijavaeebase.JavaEEExtender.deploy(JavaEEExtender.java:107)
at org.glassfish.osgijavaeebase.JavaEEExtender.access$200(JavaEEExtender.java:61)
at org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:151)
at org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:148)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
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:680)
Caused by: java.lang.RuntimeException: Failed to deploy bundle [ lu.tlk.schoolresorts.ws [313] ], root cause: Exception while loading the app
at org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:196)
at org.glassfish.osgijavaeebase.OSGiDeploymentRequest.execute(OSGiDeploymentRequest.java:118)
at org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:121)
... 10 more
Caused by: java.lang.NullPointerException
at org.glassfish.weld.BeanDeploymentArchiveImpl.handleEntry(BeanDeploymentArchiveImpl.java:504)
at org.glassfish.weld.BeanDeploymentArchiveImpl.collectJarInfo(BeanDeploymentArchiveImpl.java:482)
at org.glassfish.weld.BeanDeploymentArchiveImpl.populate(BeanDeploymentArchiveImpl.java:422)
at org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:148)
at org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:128)
at org.glassfish.weld.DeploymentImpl.(DeploymentImpl.java:121)
at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:386)
at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:100)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:183)
... 12 more
|#]

What am I missing?

Many thanks in advance for your support

Alex

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
ss141213
Offline
Joined: 2005-03-30
Points: 0

This should work. Take a look at one of your test applications where an
OSGi service is injected into a JAX-WS end point:

https://svn.java.net/svn/glassfish~svn/trunk/fighterfish/test/testapp/te...

When you deploy the wab called test.app17.war, you will see a message
like this in server.log:

HelloWebService listening at address at
http://:/test.app17/HelloWebServiceService

and the WSDL is accessible at:

http::/test.app17/HelloWebServiceService?wsdl

HTH,
Sahoo

On Thursday 08 November 2012 06:55 PM, forums@java.net wrote:
> Hello, I'm trying to implement my first OSGi hybrid application with GF
> 3.1.2.2. This is what I would like the design to be like: 1 OGSi
> bundle with
> my API contains Java Intefaces 1 OSGi bundle with the implementation
> contains
> @Stateless annotated POJO, Manifest.MF contains Export-EJB: ALL 1 OSGi
> bundle
> with the domain classes contains @Entity classes for JPA2 persistency
> 1 OSGi
> web application bundle to expose the business logic as Servlet or Web
> Service
> should contain @WebService or @WebServlet annotated classes contains an
> beans.xml file I use @Inject @OSGiService(dynamic=true) to inject my EJB
> exported service into the code I've no problem to develop (Eclipse
> Indigo)
> the 3 first bundles. I export the 3 bundles as JAR files and deploy
> them in
> {GF-HOME}/domains/domain1/autodeploy/bundles In the Felix Remote shell my
> bundles are deployed and marked as active. Unfortunately I don't know
> how to
> get the last bundles (WAB) working. When I export as JAR file, I don't
> know
> where to find the WSDL definition for the WebService. In the web admin
> console, there's no WebService entry (because it's OSGi bundle). When I
> deploy as WAR file, I see the application in the Web Admin console, I
> can see
> the WSDL and even the WS tester but the injected service is always
> NULL. I
> happen to get the following stack trace in the server.log:
> [#|2012-11-08T12:32:31.174+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Installed
>
> /Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]
>
> [#|2012-11-08T12:32:31.176+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Started
>
> bundle:
> file:/Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]
>
> [#|2012-11-08T12:32:31.176+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=18;_ThreadName=Thread-3;|Started
>
> bundle:
> file:/Users/alexweirig/devel/glassfish3.1.2.2/glassfish/domains/domain1/autodeploy/bundles/lu.tlk.schoolresorts.ws_1.0.0.201211081232.jar|#]
>
> [#|2012-11-08T12:32:31.182+0100|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Expanded
>
> at
> file:/var/folders/8m/p4qtrs0s39g0k1z99h8ll7_80000gp/T/osgiapp5009226054725074508/|#]
>
> [#|2012-11-08T12:32:31.225+0100|SEVERE|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Exception
>
> while invoking class org.glassfish.weld.WeldDeployer load method
> java.lang.NullPointerException at
> org.glassfish.weld.BeanDeploymentArchiveImpl.handleEntry(BeanDeploymentArchiveImpl.java:504)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.collectJarInfo(BeanDeploymentArchiveImpl.java:482)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.populate(BeanDeploymentArchiveImpl.java:422)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:148)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:128)
>
> at org.glassfish.weld.DeploymentImpl.(DeploymentImpl.java:121) at
> org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:386) at
> org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:100) at
> org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186) at
> org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
>
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
>
> at
> org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:183)
>
> at
> org.glassfish.osgijavaeebase.OSGiDeploymentRequest.execute(OSGiDeploymentRequest.java:118)
>
> at
> org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:121)
>
> at
> org.glassfish.osgijavaeebase.OSGiContainer.deploy(OSGiContainer.java:154)
> at
> org.glassfish.osgijavaeebase.JavaEEExtender.deploy(JavaEEExtender.java:107)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender.access$200(JavaEEExtender.java:61)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:151)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:148)
>
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:680) |#]
> [#|2012-11-08T12:32:31.226+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=20;_ThreadName=Thread-3;|Exception
>
> while loading the app|#]
> [#|2012-11-08T12:32:31.231+0100|INFO|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Deleted
>
> /var/folders/8m/p4qtrs0s39g0k1z99h8ll7_80000gp/T/osgiapp5009226054725074508|#]
>
> [#|2012-11-08T12:32:31.231+0100|SEVERE|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Failed
>
> while deploying bundle lu.tlk.schoolresorts.ws [313]|#]
> [#|2012-11-08T12:32:31.231+0100|INFO|glassfish3.1.2|org.glassfish.osgiweb|_ThreadID=20;_ThreadName=Thread-3;|Removed
>
> bundle 313 against context path /lu.tlk.schoolresorts.ws |#]
> [#|2012-11-08T12:32:31.231+0100|WARNING|glassfish3.1.2|org.glassfish.osgijavaeebase|_ThreadID=20;_ThreadName=Thread-3;|Failed
>
> to deploy bundle lu.tlk.schoolresorts.ws [313]
> org.glassfish.osgijavaeebase.DeploymentException: Deployment of
> lu.tlk.schoolresorts.ws [313] failed because of following reason: Failed
> while deploying bundle lu.tlk.schoolresorts.ws [313] :
> java.lang.RuntimeException: Failed to deploy bundle [
> lu.tlk.schoolresorts.ws
> [313] ], root cause: Exception while loading the app at
> org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:125)
>
> at
> org.glassfish.osgijavaeebase.OSGiContainer.deploy(OSGiContainer.java:154)
> at
> org.glassfish.osgijavaeebase.JavaEEExtender.deploy(JavaEEExtender.java:107)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender.access$200(JavaEEExtender.java:61)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:151)
>
> at
> org.glassfish.osgijavaeebase.JavaEEExtender$HybridBundleTrackerCustomizer$1.call(JavaEEExtender.java:148)
>
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at
> java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:680) Caused by:
> java.lang.RuntimeException: Failed to deploy bundle [
> lu.tlk.schoolresorts.ws
> [313] ], root cause: Exception while loading the app at
> org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:196)
>
> at
> org.glassfish.osgijavaeebase.OSGiDeploymentRequest.execute(OSGiDeploymentRequest.java:118)
>
> at
> org.glassfish.osgijavaeebase.AbstractOSGiDeployer.deploy(AbstractOSGiDeployer.java:121)
>
> ... 10 more Caused by: java.lang.NullPointerException at
> org.glassfish.weld.BeanDeploymentArchiveImpl.handleEntry(BeanDeploymentArchiveImpl.java:504)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.collectJarInfo(BeanDeploymentArchiveImpl.java:482)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.populate(BeanDeploymentArchiveImpl.java:422)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:148)
>
> at
> org.glassfish.weld.BeanDeploymentArchiveImpl.(BeanDeploymentArchiveImpl.java:128)
>
> at org.glassfish.weld.DeploymentImpl.(DeploymentImpl.java:121) at
> org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:386) at
> org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:100) at
> org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186) at
> org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:264)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
>
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
>
> at
> org.glassfish.osgijavaeebase.OSGiDeploymentRequest.deploy(OSGiDeploymentRequest.java:183)
>
> ... 12 more |#] What am I missing? Many thanks in advance for your
> support
> Alex
>
> --
>
> [Message sent by forum member 'alexweirig']
>
> View Post: http://forums.java.net/node/892076
>
>