Hello, I am developing a chain of web services, a client calls a web service, WS_A,, which calls another web service, WS_B. On the first call, I am using rampart and username authentication, but on the other link I am trying to use rampart and signing using public and private key pairs. I have followed this tutorial: http://wso2.org/library/3415 . I am using Apache tomcat 7, axis2 1.60, rampart 1.60 and the latest version of eclipse.
My problem is occurring between WS_A and WS_B. It works on occation, but hardly more than two times in a row. When it fails I get the following error message: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ... ... Caused by: java.lang.NullPointerException at org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:281) at org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:255) at org.apache.rampart.builder.AsymmetricBindingBuilder.doSignature(AsymmetricBindingBuilder.java:717) ... My services.xml, at WS_B, and both password callback handlers are identical with the code from the tutorial mentioned above. As for the rampart invocation at WS_A, see the following: RampartConfig rampartConfig = new RampartConfig(); rampartConfig.setUser("user"); rampartConfig.setPwCbClass("main.PWCBHandler"); CryptoConfig sigCrypto = new CryptoConfig(); sigCrypto.setProvider("org.apache.ws.security.components.crypto.Merlin"); Properties props = new Properties(); props.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "JKS"); props.setProperty("org.apache.ws.security.crypto.merlin.file",keyLocation); props.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", "pass123"); sigCrypto.setProp(props); rampartConfig.setSigCryptoConfig(sigCrypto); Policy policy = new Policy(); policy.addAssertion(rampartConfig); client.getAxisService().getPolicySubject().attachPolicy(rampartConfig); I have as well added the following to WS_A's axis2.xml: <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:MustSupportRefKeyIdentifier /> <sp:MustSupportRefIssuerSerial /> </wsp:Policy> </sp:Wss10> I have added the following jars to WebContent/Web-INF/conf, "JAVA_HOME"/lib/endorsed and "TOMCAT_HOME" / common/endorsed: serializer-2.7.1.jar xalan-2.7.1.jar xercesImpl-2.9.1.jar xml-apis-1.3.03 I am using tcpmon to see the SOAP messages sent and received, and I notice that when my program is working, the "state" field in tcpmon corresponding to the transmission still has value "active" (after a while it switches to "Req"), but never changes to "done" before I kill the server application. I have a theory that somehow the application doesn't finish, even though the SOAP response is sucessfully sent from WS_B. Can anybody see anything wrong? Best regards, Tor-Erik Steinsland