Hello, we have an entity EJB on the server, and we neet to do SOAP RPC calls to it. It seems that everithing works fine on server side, but when I call findByPrimaryKey method, it seems, that I have some problems with serialization/deserialization of returned interface from findByPrimaryKey method. Is it necessary to write my own serializer/deserializer, or org.apache.soap.encoding.soapenc.BeanSerializer should be enough? I do not know where else could be a problem. Here is my DD and code of client:
Deployment descriptor: <?xml version="1.0"?> <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id="urn:ejbsoaptest"> <isd:provider type="org.apache.soap.providers.EntityEJBProvider" scope="Application" methods="getValue setValue"> <isd:java class="humantec.SoapTestEntity"/> <isd:option key="FullHomeInterfaceName" value="sk.humantec.hcs.ma.server.soap.TestEntityHome" /> <isd:option key="ContextProviderURL" value="jnp://localhost:1099" /> <isd:option key="FullContextFactoryName" value="org.jnp.interfaces.NamingContextFactory" /> </isd:provider> <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener> <isd:mappings> <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:x="urn:xml-soap-soaptest" qname="x:TestEntityRemote" javaType="sk.humantec.hcs.ma.server.soap.TestEntityRemote" java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer" xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/> </isd:mappings> </isd:service> Client code: String service = "urn:ejbsoaptest"; Call call = new Call (); call.setTargetObjectURI (service); String encodingStyleURI = Constants.NS_URI_SOAP_ENC; call.setEncodingStyleURI(encodingStyleURI); call.setMethodName ("findByPrimaryKey"); Vector params = new Vector (); params.addElement (new Parameter("id", Integer.class, new Integer(2), null)); call.setParams(params); Response resp = call.invoke (/* router URL */ url, /* actionURI */ "" ); // this works OK - without fail or exception String ejbKeyURI = resp.getFullTargetObjectURI(); Call callM = new Call(); System.out.println("ejbKeyURI:"+ejbKeyURI); callM.setFullTargetObjectURI( resp.getFullTargetObjectURI()); callM.setEncodingStyleURI(encodingStyleURI); callM.setMethodName ("getValue"); resp = callM.invoke (/* router URL */ url, /* actionURI */ "" ); // this fails with \SOAP exception - no such Method findByPrimaryKey thanks for any help. Peter
