Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: JOnAS 5.2.0 M4
-
Fix Version/s: JOnAS 5.2.0 RC1
-
Component/s: Deployment System
-
Labels:None
-
Environment:Any
-
Global Rank:104
Description
I deploy an iPOJO bundle that implements a Web Service client stub.
I get the following Exception in the "@Validate start()" method.
org.apache.cxf.jaxws.spi.ProviderImpl cannot be cast to javax.xml.ws.spi.Provider
java.lang.ClassCastException: org.apache.cxf.jaxws.spi.ProviderImpl cannot be cast to javax.xml.ws.spi.Provider
at javax.xml.ws.spi.Provider.provider(Provider.java:39)
at javax.xml.ws.Service.<init>(Service.java:36)
at org.energetic.vc.monitor.BullResourceMonitorService.<init>(BullResourceMonitorService.java:52)
at org.energetic.socle.monitor.proxy.BullResourceMonitorServiceProvider.__start(BullResourceMonitorServiceProvider.java:39)
at org.energetic.socle.monitor.proxy.BullResourceMonitorServiceProvider.start(BullResourceMonitorServiceProvider.java)
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.ipojo.util.Callback.call(Callback.java:237)
at org.apache.felix.ipojo.util.Callback.call(Callback.java:193)
at org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallback.call(LifecycleCallback.java:86)
at org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:162)
at org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
at org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:441)
at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:322)
at org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:165)
at org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
at org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
at org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
at org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
at org.apache.felix.ipojo.Extender.parse(Extender.java:269)
at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:208)
at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
at org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:682)
at java.lang.Thread.run(Thread.java:619)
Cause:
The Thread context class loader is wrong. it just contains $JONAS_ROOT/lib/client.jar.
Work arround: force the current bundle class loader.
@Validate
public void start() {
ClassLoader oldcl = Thread.currentThread().getContextClassLoader();
try {
// workarround to avoid class cast exception if the current thread context classloader is client.jar (JOnAS bug ?)
Thread.currentThread().setContextClassLoader(BullResourceMonitorServiceProvider.class.getClassLoader());
serviceRef = new BullResourceMonitorService();
monitor = serviceRef.getResourceMonitorPort();
} finally {
Thread.currentThread().setContextClassLoader(oldcl);
}
}
Fixed