Thanks Dan. This problem is resolved after I load wss4j and its dependency jar 
xmlsec in OSGi before I load my jar.

Surprisingly, keeping wss4j and xmlsec in my bundle classpath didn't help. Even 
if I keep them as requirebundles also still problem persist. It was how used to 
be previously when we are using CXF 2.3.

I still have some more problems need to figure out.

Regards
Raman

-----Original Message-----
From: Daniel Kulp [mailto:[email protected]] 
Sent: Wednesday, September 21, 2011 12:11 AM
To: [email protected]
Cc: Malisetti, Ramanjaneyulu
Subject: Re: org.apache.ws.security.components.crypto.Merlin Not Found



Honestly, I'm not sure how to approach this.    I know Talend's WS-Security 
based things that require Crypto's are working fine.   I guess it could be 
some difference in classloaders or something between spring-dm and blueprint 
or similar.    Is there a way to create a small example?      I'd likely need 
to see how and when the service is created...

THAT said, the line:
org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:114)
[77: sample.qualifier] at

shows that it's using your application classloader.   Thus, you can likely get 
around this by adding a "Require-Bundle: wss4j" attribute to the manifest.  
That may allow it to get the class.

I'd still like to see a testcase though.  :-)

Dan



On Tuesday, September 20, 2011 4:03:34 PM Malisetti, Ramanjaneyulu wrote:
> Hi,
>       Another blocker while migrating from CXF 2.3 to 2.4.2. We are starting
> JAX-WS and REST end point from a bundle which runs in OSGi container. I
> have all CXF jars that come with 2.4.2 distribution including
> wss4j-1.6.2.jar. Though Merlin is in classpath, the following exception is
> coming.
> 
> I have read in CXF forums that this exception generally comes if conflicting
> versions of WSS4J jar in classpath. But, in our case there is no such
> possibility.
> 
> 
> Do you have any suggestion?
> 
> Caused by: org.apache.ws.security.WSSecurityException:
> org.apache.ws.security.components.crypto.Merlin Not Found
>                 at
> org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFa
> ctory.java:114)[77: sample.qualifier] at
> org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFa
> ctory.java:78)[77: sample.qualifier] at
> org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.getC
> rypto(AbstractBindingBuilder.java:1332)[77: sample.qualifier] at
> org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.getS
> ignatureCrypto(AbstractBindingBuilder.java:1258)[77: sample.qualifier] at
> org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.getS
> ignatureBuilder(AbstractBindingBuilder.java:1569)[77: sample.qualifier] at
> org.apache.cxf.ws.security.wss4j.policyhandlers.AsymmetricBindingHandler.do
> Signature(AsymmetricBindingHandler.java:462)[77: sample.qualifier] at
> org.apache.cxf.ws.security.wss4j.policyhandlers.AsymmetricBindingHandler.do
> SignBeforeEncrypt(AsymmetricBindingHandler.java:133)[77: sample.qualifier]
> ... 14 more
> Caused by: java.lang.ClassNotFoundException:
> org.apache.ws.security.components.crypto.Merlin
> 
>                 at
> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoade
> r.java:506)[osgi-3.6.2.R36x_v20110210.jar:] at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:4
> 22)[osgi-3.6.2.R36x_v20110210.jar:] at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:4
> 10)[osgi-3.6.2.R36x_v20110210.jar:] at
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultC
> lassLoader.java:107)[osgi-3.6.2.R36x_v20110210.jar:] at
> java.lang.ClassLoader.loadClass(ClassLoader.java:251)[:1.6.0_05] at
> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)[:1.6.0_05] at
> java.lang.Class.forName0(Native Method)[:1.6.0_05] at
> java.lang.Class.forName(Class.java:169)[:1.6.0_05] at
> org.apache.ws.security.util.Loader.loadClass(Loader.java:243)[77:sample.qua
> lifier] at org.apache.ws.security.util.Loader.loadClass(Loader.java:221)[77:
> sample.qualifier] at
> org.apache.ws.security.util.Loader.loadClass(Loader.java:215)[77:
> sample.qualifier] at
> org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFa
> ctory.java:109)[77: sample.qualifier] ... 20 more
> 
> Thanks & Regards
> Raman
-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to