You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Kevin Lux <lu...@saul.cis.upenn.edu> on 2002/02/22 19:05:07 UTC

Soap/Serializing javax.crypto.SealedObject?

Hi,

I've been trying to serialize a SealedObject (which according to the Sun
docs implements Serializable) and keep getting back SOAP errors whining
that it doesn't know how to serialize the object. Am I missing something
here?

Here's the error:

[SOAPException: faultCode=SOAP-ENV:Client; msg=No Serializer found to
serialize a 'javax.crypto.SealedObject' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.;
targetException=java.lang.IllegalArgumentException: No Serializer found to
serialize a 'javax.crypto.SealedObject' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.]
        at
org.apache.soap.transport.http.SOAPHTTPConnection.send(SOAPHTTPConnection.java:324)
        at org.apache.soap.rpc.Call.invoke(Call.java:205)
        at Client.gupReg(Client.java:90)
        at Client.main(Client.java:144)

Here's the code:

	import javax.crypto.*;

	### snip ###

        SealedObject so2 = new SealedObject(obj, c2);

        Call call = new Call ();
        call.setTargetObjectURI ("urn:test-gup-server"); //remember this name for the deployment descriptor.
        call.setMethodName ("GUPReg");
        call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);


        Vector params = new Vector ();
        params.addElement (new Parameter("spo1", SealedObject.class, so1, null));


        SOAPMappingRegistry smr = new SOAPMappingRegistry();
        BeanSerializer beanSer = new BeanSerializer();

        smr.mapTypes(Constants.NS_URI_SOAP_ENC,
                new QName("urn:xml-soap-sealed-pub-object", "sealed-pub-object"),
                SealedPubObject.class, beanSer, beanSer);

        call.setSOAPMappingRegistry(smr);
        call.setParams (params);
	Response resp = call.invoke (/* router URL */ SOAPUrl, /* actionURI */ "" );

Thanks,
Kevin