Hi, I've back to working on transparent digital signature of the functional tests. I've run into a problem that I don't know how to solve: Sometime the client-side signer samples.security.ClientSigningHandler works just fine -- most notably when used with org.apache.axis.client.AdminClient. I can deploy all the services that I want and the deployment requests all get signed just fine. When I actually try to run a deployed test, I get:
Beginning Client signing... java.io.IOException: No serializer found for class java.lang.String in registry org.apache.axis.encoding.SerializationContextImpl@5c62d539 at org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:864) at org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:526) at org.apache.axis.message.RPCParam.serialize(RPCParam.java:133) at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:198) at org.apache.axis.message.MessageElement.output(MessageElement.java:481) at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:439) at org.apache.axis.message.MessageElement.output(MessageElement.java:481) at org.apache.axis.message.MessageElement.getAsDocument(MessageElement.java:423) at samples.security.SignedSOAPEnvelope.init(SignedSOAPEnvelope.java:118) at samples.security.SignedSOAPEnvelope.<init>(SignedSOAPEnvelope.java:101) at samples.security.ClientSigningHandler.invoke(ClientSigningHandler.java:99) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:151) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:118) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invoke(Call.java:1510) at org.apache.axis.client.Call.invoke(Call.java:1327) at org.apache.axis.client.Call.invoke(Call.java:1257) at org.apache.axis.client.Call.invoke(Call.java:854) at samples.stock.GetQuote.getQuote(GetQuote.java:124) at samples.stock.GetQuote.main(GetQuote.java:138) AxisFault faultCode: http://xml.apache.org/axis/:Server.userException faultString: java.lang.RuntimeException: java.io.IOException: No serializer found for class java.lang.String in registry org.apache.axis.encoding.SerializationContextImpl@5c62d539 faultActor: null faultDetail: stackTrace: java.lang.RuntimeException: java.io.IOException: No serializer found for class java.lang.String in registry org.apache.axis.encoding.SerializationContextImpl@5c62d539 at samples.security.SignedSOAPEnvelope.init(SignedSOAPEnvelope.java:161) at samples.security.SignedSOAPEnvelope.<init>(SignedSOAPEnvelope.java:101) at samples.security.ClientSigningHandler.invoke(ClientSigningHandler.java:99) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:151) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:118) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invoke(Call.java:1510) at org.apache.axis.client.Call.invoke(Call.java:1327) at org.apache.axis.client.Call.invoke(Call.java:1257) at org.apache.axis.client.Call.invoke(Call.java:854) at samples.stock.GetQuote.getQuote(GetQuote.java:124) at samples.stock.GetQuote.main(GetQuote.java:138) The client handler works by getting the request message out of the MessageContext that is passed to the handler's invoke method. It then calls getSOAPEnvelope() to get an Envelope that can be signed. Signing happens by creating a SignedSOAPEnvelope from the unsigned envelope. In order to sign the envelope, I need to get it as a DOM tree. Calling getAsDocument on the unsigned envelope is what causes the blowup. It appears that the SerializationContextImpl that is being created is being created with no mappings. I'm not familiar enough (yet) with the code to figure out where the mappings should be getting created in this case. Any pointers would be greatly appreciated. On a related note: A number of the tests us relative URIs for namespace values in the .wsdl files. This turns into pain under XML Signature because we have to canonicalize the message. It would save a lot of hassle if we stopped using these relative URIs. Ted