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
