Hi,
As I mentioned, in OSGi container you shouldn't use
<entry key="passwordCallbackClass"
value="com.ca.ucf.security.impl.PasswordCallbackHandler"/> to configure your
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
Instead you should use something like
<bean id="myPasswordCallback"
class="com.ca.ucf.security.impl.PasswordCallbackHandler"/>
and then in the WSS4JInInterceptor configuration, using
<entry key="passwordCallbackRef">
<ref bean="myPasswordCallback"/>
</entry>
this way, you pass a bean instance reference into WSS4JInInterceptor but not a
String classname(which avoid the Class.forName(classname) under the hood), as
the Class.forName(classname) thing doesn't work well in OSGi container.
-------------
Freeman(Yue) Fang
Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: @Freeman小屋
On 2013-1-7, at 下午7:06, Nagamohan wrote:
>
> Freeman Fang <freeman.fang@...> writes:
>
>>
>> Hi,
>>
>> What's the OSGi container you're using?
>> How your customer bundle OSGi metadata header looks like?
>> -------------
>> Freeman(Yue) Fang
>>
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Web: http://fusesource.com | http://www.redhat.com/
>> Twitter: freemanfang
>> Blog: http://freemanfang.blogspot.com
>> http://blog.sina.com.cn/u/1473905042
>> weibo: @Freeman小屋
>>
>> On 2013-1-7, at 上午12:37, Malisetti, Ramanjaneyulu wrote:
>>
>>> Hi,
>>> In OSGi env we are getting the following exception. How can we make
> WSS4JInInterceptor find our callback
>> handler? We are using CXF 2.7.1.
>>>
>>> 2013-01-06 11:21:21,238 ERROR [Thread] client.WSModuleProxy -118-
> com.ca.ucf.core.bind-3.3.0.50
>> - com.ca.ucf.security.impl.PasswordCallbackHandler.
>>> javax.xml.ws.soap.SOAPFaultException:
> com.ca.ucf.security.impl.PasswordCallbackHandler
>>> at
> org.apache.cxf.jaxws.DispatchImpl.mapException(DispatchImpl.java:287)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:392)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:243)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at com.ca.ucf.remote.ws.SOAPHelper.proxyInvoke(SOAPHelper.java:257)
> [118:com.ca.ucf.core.bind:3.3.0.50]
>>> Caused by: org.apache.cxf.binding.soap.SoapFault:
> com.ca.ucf.security.impl.PasswordCallbackHandler
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInter
> ceptor.java:793)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterce
> ptor.java:329)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterce
> ptor.java:95)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.jav
> a:271)[101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:800)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInte
> rnal(HTTPConduit.java:1590)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTT
> PConduit.java:1488)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.
> java:1307)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingIntercept
> or.handleMessage(MessageSenderInterceptor.java:62)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.jav
> a:271)[101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:354)
> [101:org.apache.cxf.bundle:2.7.1]
>>> at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:385)
> [101:org.apache.cxf.bundle:2.7.1]
>>> ... 5 more
>>> Caused by: org.apache.ws.security.WSSecurityException:
> com.ca.ucf.security.impl.PasswordCallbackHandler
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getCallback(WSS4JInIntercept
> or.java:638)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getCallback(WSS4JInIntercept
> or.java:621)[101:org.apache.cxf.bundle:2.7.1]
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterce
> ptor.java:238)[101:org.apache.cxf.bundle:2.7.1]
>>> ... 21 more
>>> Caused by: java.lang.ClassNotFoundException:
> com.ca.ucf.security.impl.PasswordCallbackHandler
>>> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.jav
> a:501)
>>> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
>>> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
>>> at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassL
> oader.java:107)
>>> at java.lang.ClassLoader.loadClass(Unknown Source)[:1.7.0_12-ea]
>>> at
> org.apache.cxf.common.classloader.ClassLoaderUtils.loadClass2(ClassLoaderUtils.j
> ava:287)
>>> at
> org.apache.cxf.common.classloader.ClassLoaderUtils.loadClass(ClassLoaderUtils.ja
> va:261)
>>> at
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getCallback(WSS4JInIntercept
> or.java:636)[101:org.apache.cxf.bundle:2.7.1]
>>> ... 23 more
>>>
>>
>>
>
> Hi Freeman,
>
> I also faced same problem, i am using karaf OSGI container + cxf 2.7.1.
>
> here is the MANIFEST.MF export package section, below package has the Custom
> PasswordCallbackHandler class.
>
> customer bundle OSGi metadata header
>
> Export-Package: com.test.security.impl
>
> Thanks,
> -Nagamohan
>
>
>
>