Hi folks,

Apologies if this has already been answered.  I've been back through the
previous two quarters' messages and I didn't find anything pertinent.

I'm having a play with the Pax Web War Extender, and I have got it working
with a WAB.  The WAB contains just a couple of JSP pages at this point, as
well as a bundle activator, which registers a servlet via the Whiteboard
extender:

        Dictionary<String, String> props = new Hashtable<String, String>();
        props.put( "alias", "/testservlet" );
        props.put( "servlet-name", "My Servlet" );
        sr = context.getBundleContext().registerService(
Servlet.class.getName(), servlet, props );

When this line is executed, Pax raises an IllegalArgumentException:

        ERROR: Bundle org.ops4j.pax.web.pax-web-extender-whiteboard [12]
EventDispatcher: Error during dispatch. (java.lang.IllegalStateException:
Http context already used. Context params can be set only before first
usage)
java.lang.IllegalStateException: Http context already used. Context params
can be set only before first usage

I'll include the full trace at the end, in case it's useful.  The JSP works,
despite the exception, but the servlet doesn't.

My working theory is that the WAR extender creates an HttpContext and uses
this to serve the JSPs.  When I then try to register my servlet, the
Whiteboard is using the same context.

Am I doing something wrong?  Is it possible to use both the extender and the
whiteboard at the same time?

I have the following Pax bundles deployed in the latest Felix:

OPS4J Pax Web - Extender - WAR (1.0.3)
OPS4J Pax Web - Extender - Whiteboard (1.0.3)
OPS4J Pax Web - Jetty Bundle (1.0.3)
OPS4J Pax Web - Jsp Support (1.0.3)
OPS4J Pax Web - Service SPI (1.0.3)

Many thanks everyone, any advice would be appreciated.  Apologies if gmail
has screwed up the formatting.

-John

----------------8<---------------

ERROR: Bundle org.ops4j.pax.web.pax-web-extender-whiteboard [12]
EventDispatcher: Error during dispatch. (java.lang.IllegalStateException:
Http context already used. Context params can be set only before first
usage)
java.lang.IllegalStateException: Http context already used. Context params
can be set only before first usage
    at
org.ops4j.pax.web.service.internal.HttpServiceStarted.setContextParam(HttpServiceStarted.java:353)
    at
org.ops4j.pax.web.service.internal.HttpServiceProxy.setContextParam(HttpServiceProxy.java:174)
    at
org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.registerHttpContext(WebApplication.java:180)
    at
org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.setHttpContextMapping(WebApplication.java:147)
    at
org.ops4j.pax.web.extender.whiteboard.internal.ExtenderContext.getWebApplication(ExtenderContext.java:68)
    at
org.ops4j.pax.web.extender.whiteboard.internal.tracker.AbstractTracker.addingService(AbstractTracker.java:135)
    at
org.ops4j.pax.web.extender.whiteboard.internal.tracker.ServletTracker.addingService(ServletTracker.java:42)
    at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:896)
    at
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:261)
    at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:233)
    at
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
    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:3894)
    at org.apache.felix.framework.Felix.access$000(Felix.java:79)
    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:2983)
    at
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:310)
    at
org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:284)
    at dam.ui.web.test.TestClass.activate(TestClass.java:50)
    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.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227)
    at
org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38)
    at
org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591)
    at
org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472)
    at
org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:146)
    at
org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:226)
    at
org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:118)
    at
org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1013)
    at
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:333)
    at
org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:157)
    at
org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:313)
    at
org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:253)
    at
org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147)
    at
org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111)
    at
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:274)
    at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:192)
    at
org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807)
    at
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729)
    at
org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610)
    at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3883)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1797)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1173)
    at
org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)
    at java.lang.Thread.run(Thread.java:680)


-- 
John Hawksley
john.hawks...@gmail.com
_______________________________________________
general mailing list
general@lists.ops4j.org
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to