users@glassfish.java.net

Re: JSF 2 pages spread over multiple OSGi bundles

From: Robert Anderson <ranomail_at_gmail.com>
Date: Fri, 5 Aug 2011 11:51:08 -0300

Sahoo,

The problem is intermittent. Stop and start module1 few times, then the
problem will occur.

I think that the problem can be here (
http://svn-mirror.glassfish.org/glassfish-svn/trunk/v3/web/weld-integration/src/main/java/org/glassfish/weld/ACLSingletonProvider.java
):

       /**
         * This is the most significant method of this class. This is what
         * distingushes it from TCCLSIngleton. It tries to obtain a class loader
         * that's common to all modules of an application (ear). Since it runs
         * in the context of Java EE, it can assume that Thread's context
         * class loader is always set as application class loader. In GlassFish,
         * the class loader can vary for each module of an Ear. Thread's
         * context class loader is set depending on which module is handling
         * the request. But, fortunately all those embedded module class loaders
         * have a common parent in their delegation chain. That parent
         * is of type EarLibClassLoader. So, this code walks up the delegation
         * chain until it hits either a EarLibClassLoader type of parent or
         * bootstrapClassLoader. If former is the case, it returns that
         * instance of EarLibClassLoader. If latter is the case, it assumes
         * that this is a standalone module and hence it returns the thread's
         * context class loader.
         *
         * @return a class loader that's common to all modules of a Java EE app
         */
        private ClassLoader getClassLoader()
        {
            SecurityManager sm = System.getSecurityManager();
            final ClassLoader tccl = (sm != null) ?
                    AccessController.doPrivileged(new
PrivilegedAction<ClassLoader>()
                    {
                        public ClassLoader run()
                        {
                            return
Thread.currentThread().getContextClassLoader();
                        }
                    }) : Thread.currentThread().getContextClassLoader();
            if (tccl == null) {
                throw new RuntimeException("Thread's context class
loader is null");
            }

            ClassLoader cl = tccl;

            // most of the time, class loader of application (whether it is a
            // standalone module or an ear) has common class loader in their
            // delegation chain. So, we can break the loop early for them.
            // There are exceptions like hybrid app to this rule.
            // So, we have to walk upto bootstrapCL in worst case.
            while (cl != ccl && cl != bootstrapCL) {
                if (cl instanceof EarLibClassLoader) {
//
System.out.println("ACLSingletonProvider.getClassLoader():\n" +
// "Application Class Loader = [ " + cl + "],\n" +
// "Thread Context Class Loader = [" + tccl + "]");
                    return cl;
                }
                cl = getParent(cl);
            }
            return tccl;
        }

Apparently, in some cases (hybrid applications) getClassLoader() doesn't
find the correct classloader and store.get(acl) returns null.


Robert

On Fri, Aug 5, 2011 at 10:12 AM, Robert Anderson <ranomail_at_gmail.com> wrote:

> I've this very interesting post (
> http://www.adam-bien.com/roller/abien/entry/singleton_the_simplest_possible_jmx
> )
>
> "
> ....
>
> 2) Methods called via JMX may also fire *CDI Events*.* However there is a
> problem that the context class loader is not the one of the container when
> the* JMX *method is called and so I had to set it manualy. Otherwise I got
> an Exception during runtime saying >>java.lang.IllegalStateException:
> Singleton not set for sun.misc.Launcher$AppClassLoader@...*<<
>
> I would like to ask if using CDI (specially events) during JMX calls is not
> conform to the specification, if its a bug, or if its intended to switch the
> classloader manually. Any Idea?
>
> Thx for your input!
>
> Jan Wiemer
> "
>
> The question is: Why the problem is not happening in your environment?
>
> Robert
>
>
> On Fri, Aug 5, 2011 at 9:59 AM, Robert Anderson <ranomail_at_gmail.com>wrote:
>
>> Sahoo,
>>
>> Testing with Glassfish 3.1.1...
>>
>> g! install
>> file:/F:/Users/ranophoenix_2/Documents/Pos-ESAB/Experimentos/osgijee/core/target/core.jar
>> Bundle ID: 253
>> g! start 253
>> g! install
>> file:/F:/Users/ranophoenix_2/Documents/Pos-ESAB/Experimentos/osgijee/webclient/target/webclient.war
>> Bundle ID: 254
>> g! start 254
>> g! install
>> file:/F:/Users/ranophoenix_2/Documents/Pos-ESAB/Experimentos/osgijee/module1/target/module1.war
>> Bundle ID: 255
>> g! start 255
>> ERROR: Bundle ranophoenix.osgijee.webclient [254]: EventDispatcher: Error
>> during dispatch. (java.lang.IllegalStateExcept
>> ion: Singleton not set for sun.misc.Launcher$AppClassLoader_at_1f7182c1)
>> java.lang.IllegalStateException: Singleton not set for
>> sun.misc.Launcher$AppClassLoader_at_1f7182c1
>>
>> at
>> org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:110)
>> at org.jboss.weld.Container.instance(Container.java:58)
>> at
>> org.jboss.weld.resolution.ResolvableBuilder.checkQualifier(ResolvableBuilder.java:209)
>> at
>> org.jboss.weld.resolution.ResolvableBuilder.addQualifier(ResolvableBuilder.java:174)
>> at
>> org.jboss.weld.resolution.ResolvableBuilder.addQualifiers(ResolvableBuilder.java:202)
>> at
>> org.jboss.weld.manager.BeanManagerImpl.resolveObserverMethods(BeanManagerImpl.java:474)
>> at
>> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:625)
>> at org.jboss.weld.event.EventImpl.fire(EventImpl.java:75)
>> at
>> ranophoenix.osgijee.webclient.impl.cdi.ModuleExtensionListener.serviceChanged(ModuleExtensionListener.java:42
>>
>> )
>> at
>> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:871)
>> at
>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:733)
>> at
>> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
>> at
>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3769)
>> at org.apache.felix.framework.Felix.access$000(Felix.java:80)
>> at
>> org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:722)
>> at
>> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
>> at
>> org.apache.felix.framework.Felix.registerService(Felix.java:2854)
>> at
>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
>> at
>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:229)
>> at
>> ranophoenix.osgijee.module1.impl.Activator.start(Activator.java:17)
>> at
>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:629)
>> at
>> org.apache.felix.framework.Felix.activateBundle(Felix.java:1835)
>> at org.apache.felix.framework.Felix.startBundle(Felix.java:1752)
>> at
>> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:922)
>> at org.apache.felix.gogo.command.Basic.start(Basic.java:758)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at
>> org.apache.felix.gogo.runtime.Reflective.method(Reflective.java:136)
>> at
>> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
>> at
>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:469)
>> at
>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:395)
>> at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>> at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>> at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>> at
>> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>> at org.apache.felix.gogo.shell.Console.run(Console.java:62)
>> at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)
>> at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at
>> org.apache.felix.gogo.runtime.Reflective.method(Reflective.java:136)
>> at
>> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
>> at
>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:469)
>> at
>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:395)
>> at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
>> at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
>> at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
>> at
>> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>> at
>> org.apache.felix.shell.remote.Shell.startGogoShell(Shell.java:108)
>> at org.apache.felix.shell.remote.Shell.run(Shell.java:81)
>>
>> at java.lang.Thread.run(Thread.java:662)
>> Module1 started
>>
>> This problem occurred again in Glassfish V3.1 even after clearing the
>> cache. What is your JVM version?
>>
>> My version (Windows):
>>
>> java version "1.6.0_25"
>> Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
>> Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
>>
>> this kind of problem is very annoying...
>>
>> I will continue investigating and I will keep you informed about any
>> progress.
>>
>> Cheers,
>>
>> Robert
>>
>>
>>
>> On Fri, Aug 5, 2011 at 8:44 AM, Robert Anderson <ranomail_at_gmail.com>wrote:
>>
>>> Thanks Sahoo!
>>>
>>> Problem resolved! I had to clean the osgi-cache dir. Now It's working
>>> like a charm. :)
>>>
>>> Next step: render a JSF page (about.xhtml) in module1/module2 from
>>> webclient.
>>>
>>> I'll try Glassfish 3.1.1.
>>>
>>> Best regards,
>>>
>>> Robert
>>>
>>>
>>>
>>> On Fri, Aug 5, 2011 at 8:30 AM, Sahoo <sanjeeb.sahoo_at_oracle.com> wrote:
>>>
>>>> **
>>>> I have now tried with your latest changes and with 3.1b43, but could not
>>>> reproduce. This is what I am doing:
>>>>
>>>> $ telnet localhost 6666
>>>> g! install
>>>> file:/space/ss141213/bugs/scattered-jsf/osgijee/core/target/core.jar
>>>> Bundle ID: 220
>>>> g! install install
>>>> file:/space/ss141213/bugs/scattered-jsf/osgijee/webclient/target/webclient.war
>>>> java.net.MalformedURLException: no protocol: install
>>>> Bundle ID: 222
>>>> g! install
>>>> file:/space/ss141213/bugs/scattered-jsf/osgijee/webclient/target/webclient.war
>>>> Bundle ID: 222
>>>> g! start 220 222
>>>> g! install
>>>> file:/space/ss141213/bugs/scattered-jsf/osgijee/module1/target/module1.war
>>>>
>>>> Bundle ID: 223
>>>> g! start 223
>>>> Module1 started
>>>>
>>>> server.log has following output:
>>>>
>>>>
>>>> [#|2011-08-05T16:54:40.653+0530|INFO|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=52;_ThreadName=pool-7-thread-1;|WEB0671:
>>>> Loading application [ranophoenix.osgijee.webclient_1.0.0.SNAPSHOT] at
>>>> [/webclient]|#]
>>>>
>>>> [#|2011-08-05T16:54:40.659+0530|INFO|glassfish3.1|org.glassfish.osgiweb|_ThreadID=19;_ThreadName=pool-7-thread-1;osgi.web.symbolicname=ranophoenix.osgijee.webclient;osgi.web.version=1.0.0.SNAPSHOT;osgi.web.contextpath=/webclient;|Registered
>>>> ServletContext as a service with properties:
>>>> {osgi.web.symbolicname=ranophoenix.osgijee.webclient,
>>>> osgi.web.version=1.0.0.SNAPSHOT, osgi.web.contextpath=/webclient} |#]
>>>>
>>>> [#|2011-08-05T16:54:40.661+0530|INFO|glassfish3.1|org.glassfish.osgijavaeebase|_ThreadID=19;_ThreadName=pool-7-thread-1;|deployed
>>>> bundle ranophoenix.osgijee.webclient [222] at
>>>> file:/tmp/osgiapp7051378758467932014/|#]
>>>>
>>>>
>>>> Could you please try with GlassFish 3.1.1? I definitely recommend using
>>>> GlassFish 3.1.1 as it has some bug fixes as well. When you use 3.1.1, the
>>>> shell is not turned on by default, otherwise rest of OSGi/JavaEE features
>>>> are all on unlike 3.1. To enable the shell, pl. see the instruction in the
>>>> pdf I had earlier pointed to.
>>>>
>>>> Thanks,
>>>> Sahoo
>>>>
>>>> On Friday 05 August 2011 04:24 PM, Robert Anderson wrote:
>>>>
>>>> Hi Sahoo,
>>>>
>>>> I'm using Glassfish 3.1.build-43.
>>>>
>>>> I changed the code to illustrate the problem (
>>>> http://code.google.com/p/osgijee/source/browse/webclient/src/main/java/ranophoenix/osgijee/webclient/impl/cdi/ModuleExtensionListener.java).
>>>>
>>>>
>>>> Steps:
>>>>
>>>> $> asadmin start-database
>>>> $> asadmin start-domain
>>>> $> telnet localhost 6666 //osgi shell or OSGi Web Console
>>>> osgi> install core.jar
>>>> osgi> start <core.jar id>
>>>> osgi> install webclient.war
>>>> osgi> start <webclient.war id>
>>>>
>>>> /-- glassfish log --/
>>>> INFO: Expanded at
>>>> file:/F:/Users/RANOPH~1/AppData/Local/Temp/osgiapp7656686012903924963/
>>>> INFO: Instantiated an instance of
>>>> org.hibernate.validator.engine.resolver.JPATraversableResolver.
>>>> INFO: total number of classes with faces annotation = 0
>>>> INFO: Inicializando Mojarra 2.1.0 (FCS 2.1.0-b11) para o contexto
>>>> '/webclient'
>>>> INFO: Faces Config uris excluding the ones named as faces-config.xml =
>>>> [bundle://363.0:0/WEB-INF/classes/META-INF/weld.faces-config.xml]
>>>> INFO: Facelet Config uris = []
>>>> INFO: WEB0671: Loading application
>>>> [ranophoenix.osgijee.webclient_1.0.0.SNAPSHOT] at [/webclient]
>>>> INFO: Registered ServletContext as a service with properties:
>>>> {osgi.web.symbolicname=ranophoenix.osgijee.webclient,
>>>> osgi.web.version=1.0.0.SNAPSHOT, osgi.web.contextpath=/webclient}
>>>> INFO: deployed bundle ranophoenix.osgijee.webclient [363] at
>>>> file:/F:/Users/RANOPH~1/AppData/Local/Temp/osgiapp7656686012903924963/
>>>> /-- end glassfish log --/
>>>>
>>>> osgi> install module1.war
>>>> osgi> start <module1.war id>
>>>>
>>>> /-- glassfish log --/
>>>> INFO: ERROR: Bundle ranophoenix.osgijee.webclient [363]:
>>>> EventDispatcher: Error during dispatch. (java.lang.IllegalStateException:
>>>> Singleton not set for WebappClassLoader (delegate=false; repositories=))
>>>> GRAVE: java.lang.IllegalStateException: Singleton not set for
>>>> WebappClassLoader (delegate=false; repositories=)
>>>> at
>>>> org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:110)
>>>> at org.jboss.weld.Container.instance(Container.java:58)
>>>> at
>>>> org.jboss.weld.resolution.ResolvableBuilder.checkQualifier(ResolvableBuilder.java:209)
>>>> at
>>>> org.jboss.weld.resolution.ResolvableBuilder.addQualifier(ResolvableBuilder.java:174)
>>>> at
>>>> org.jboss.weld.resolution.ResolvableBuilder.addQualifiers(ResolvableBuilder.java:202)
>>>> at
>>>> org.jboss.weld.manager.BeanManagerImpl.resolveObserverMethods(BeanManagerImpl.java:474)
>>>> at
>>>> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:625)
>>>> at org.jboss.weld.event.EventImpl.fire(EventImpl.java:75)
>>>> at
>>>> ranophoenix.osgijee.webclient.impl.cdi.ModuleExtensionListener.serviceChanged(ModuleExtensionListener.java:45)
>>>> at
>>>> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:871)
>>>> at
>>>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:733)
>>>> at
>>>> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
>>>> at
>>>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3769)
>>>> at org.apache.felix.framework.Felix.access$000(Felix.java:80)
>>>> at org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:722)
>>>> at
>>>> org.apache.felix.framework.ServiceRegistry.registerService(ServiceRegistry.java:107)
>>>> at org.apache.felix.framework.Felix.registerService(Felix.java:2854)
>>>> at
>>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:251)
>>>> at
>>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:229)
>>>> at
>>>> ranophoenix.osgijee.module1.impl.Activator.start(Activator.java:17)
>>>> at
>>>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:629)
>>>> at org.apache.felix.framework.Felix.activateBundle(Felix.java:1835)
>>>> at org.apache.felix.framework.Felix.startBundle(Felix.java:1752)
>>>> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:922)
>>>> at
>>>> org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:114)
>>>> at
>>>> org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:286)
>>>> at
>>>> org.apache.felix.webconsole.internal.misc.ShellServlet.doPost(ShellServlet.java:93)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>>> at
>>>> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:428)
>>>> at
>>>> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:375)
>>>> at
>>>> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
>>>> at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
>>>> at
>>>> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>>>> at
>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
>>>> at
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:171)
>>>> at
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
>>>> at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
>>>> at
>>>> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
>>>> at
>>>> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
>>>> at
>>>> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
>>>> at
>>>> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
>>>> at
>>>> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>>>> at
>>>> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>>>> at
>>>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>>>> at
>>>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>>>> at
>>>> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>>>> at
>>>> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>>>> at
>>>> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>>>> at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>>>> at
>>>> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>>>> at
>>>> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>>>> at java.lang.Thread.run(Thread.java:662)
>>>>
>>>> INFO: Module1 started
>>>>
>>>> /-- end glassfish log --/
>>>>
>>>>
>>>> Thanks in advance,
>>>>
>>>> Robert
>>>>
>>>>
>>>> On Fri, Aug 5, 2011 at 1:28 AM, Sahoo <sanjeeb.sahoo_at_oracle.com> wrote:
>>>>
>>>>> Robert,
>>>>>
>>>>> I can't reproduce this. I tried commenting out this line of code as
>>>>> well in
>>>>> osgijee/webclient/src/main/java/ranophoenix/osgijee/webclient/impl/cdi/ModuleExtensionListener.java:
>>>>> modExtAddedEvent.fire(me);
>>>>> //java.lang.IllegalStateException: Singleton not set for WebappClassLoader
>>>>> (delegate=false; repositories=)
>>>>>
>>>>> , yet I can't reproduce. I have copied core.jar, webclient.war,
>>>>> module[12].war to autodeploy/bundles/. What step is missing?
>>>>>
>>>>> Thanks,
>>>>> Sahoo
>>>>>
>>>>>
>>>>> On Friday 05 August 2011 12:18 AM, Robert Anderson wrote:
>>>>>
>>>>> "GlassFish has a number of OSGi features exposed to the end user which
>>>>> are all nicely documented in the official documentation."
>>>>>
>>>>> Surely! I'm liking very much. Obviously a lot can still be improved,
>>>>> but that's why we're here. Long life open source! ;)
>>>>>
>>>>> So...
>>>>>
>>>>> I'm trying to use CDI events but I'm receiving the exception below:
>>>>>
>>>>> java.lang.IllegalStateException: Singleton not set for
>>>>> WebappClassLoader (delegate=false; repositories=)
>>>>> at
>>>>> org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:110)
>>>>> at org.jboss.weld.Container.instance(Container.java:58)
>>>>> at
>>>>> org.jboss.weld.resolution.ResolvableBuilder.checkQualifier(ResolvableBuilder.java:209)
>>>>> at
>>>>> org.jboss.weld.resolution.ResolvableBuilder.addQualifier(ResolvableBuilder.java:174)
>>>>> at
>>>>> org.jboss.weld.resolution.ResolvableBuilder.addQualifiers(ResolvableBuilder.java:202)
>>>>> at
>>>>> org.jboss.weld.manager.BeanManagerImpl.resolveObserverMethods(BeanManagerImpl.java:474)
>>>>> at
>>>>> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:625)
>>>>> at org.jboss.weld.event.EventImpl.fire(EventImpl.java:75)
>>>>> at
>>>>> ranophoenix.osgijee.webclient.impl.cdi.ModuleExtensionListener.serviceChanged(ModuleExtensionListener.java:45)
>>>>> at
>>>>> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:871)
>>>>> at
>>>>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:733)
>>>>> at
>>>>> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:662)
>>>>> at
>>>>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:3769)
>>>>> at org.apache.felix.framework.Felix.access$000(Felix.java:80)
>>>>> at
>>>>> org.apache.felix.framework.Felix$2.serviceChanged(Felix.java:722)
>>>>> at
>>>>> org.apache.felix.framework.ServiceRegistry.unregisterService(ServiceRegistry.java:135)
>>>>> at
>>>>> org.apache.felix.framework.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:129)
>>>>> at
>>>>> org.apache.felix.framework.ServiceRegistry.unregisterServices(ServiceRegistry.java:178)
>>>>> at org.apache.felix.framework.Felix.stopBundle(Felix.java:2227)
>>>>> at org.apache.felix.framework.BundleImpl.stop(BundleImpl.java:958)
>>>>> at
>>>>> org.apache.felix.shell.impl.StopCommandImpl.execute(StopCommandImpl.java:93)
>>>>> at
>>>>> org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:286)
>>>>> at
>>>>> org.apache.felix.webconsole.internal.misc.ShellServlet.doPost(ShellServlet.java:93)
>>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>>>>> at
>>>>> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:428)
>>>>> at
>>>>> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:375)
>>>>> at
>>>>> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
>>>>> at
>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
>>>>> at
>>>>> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>>>>> at
>>>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
>>>>> at
>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:171)
>>>>> at
>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
>>>>> at
>>>>> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
>>>>> at
>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
>>>>> at
>>>>> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
>>>>> at
>>>>> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
>>>>> at
>>>>> com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
>>>>> at
>>>>> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
>>>>> at
>>>>> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
>>>>> at
>>>>> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
>>>>> at
>>>>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
>>>>> at
>>>>> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
>>>>> at
>>>>> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
>>>>> at
>>>>> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
>>>>> at
>>>>> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
>>>>> at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
>>>>> at
>>>>> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
>>>>> at
>>>>> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
>>>>> at java.lang.Thread.run(Thread.java:662)
>>>>>
>>>>>
>>>>>
>>>>> Source code:
>>>>> http://code.google.com/p/osgijee/source/browse/webclient/src/main/java/ranophoenix/osgijee/webclient/impl/cdi/ModuleExtensionListener.java
>>>>>
>>>>>
>>>>> Suggestions?
>>>>>
>>>>>
>>>>> Thanks in advance,
>>>>>
>>>>> Robert
>>>>>
>>>>> On Thu, Aug 4, 2011 at 11:32 AM, Jason Lee <jason.d.lee_at_oracle.com>wrote:
>>>>>
>>>>>> While not perfect, GlassFish has a number of OSGi features exposed to
>>>>>> the end user which are all nicely documented in the official documentation.
>>>>>> What this user is trying to do is a pretty specific use case, so it's not
>>>>>> something we have had to investigate yet. Oddly enough, though, I was
>>>>>> recently requested to do exactly this same thing, so I'll be looking into
>>>>>> this as well.
>>>>>>
>>>>>> We can't cover every use case a user might have, but we try to cover
>>>>>> the big ones. The others we'll fill in as we can when the need arises.
>>>>>> This is, though, an open source effort, so there's always room for someone
>>>>>> to jump in and help, as is the case here. :)
>>>>>>
>>>>>>
>>>>>> On 8/4/11 6:48 AM, Martin Gainty wrote:
>>>>>>
>>>>>> your product is suffering mr ellison...
>>>>>> why doesnt larry open his wallet and hire some of the millions of
>>>>>> unpaid engineers that support this product?
>>>>>> JBoss is no picnic but at least RH PAYS their engineers to put OSGI
>>>>>> features in JBoss
>>>>>>
>>>>>> 'Nuf said
>>>>>> Martin Gainty
>>>>>>
>>>>>> --
>>>>>> Jason Lee
>>>>>> Senior Member of Technical Staff
>>>>>> GlassFish REST API / Administration Console
>>>>>>
>>>>>> Oracle Corporation
>>>>>> Phone +1 405-216-3193
>>>>>> Blog http://blogs.steeplesoft.com
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>