You can migrate Web services that were developed using Apache SOAP to Web services that are developed based on the Web Services for J2EE specification.
If you have used Web services based on Apache SOAP and now want to develop and implement Web services that are Java-based, you need to migrate client applications developed with all versions of 4.0, and versions of 5.0 prior to 5.0.2.
To follow this path, see the article on developing a Web services client in the information center.
Because JAX-RPC does not specify a framework for user-written serializers, the JAX-RPC does not support the use of custom serializers. If your application cannot conform to the default mapping between Java, WSDL, and XML technology supported by WebSphere Application Server, do not attempt to migrate the application. The remainder of this topic assumes that you decided to use the JAX-RPC dynamic invocation interface (DII) APIs.
javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(new QName(""));in JAX-RPC.
org.apache.soap.rpc.Call call = new org.apache.soap.rpc.Call ()in Apache SOAP.An instance of the Call object is created by
java.xml.rpc.Call call = service.createCall();in JAX-RPC.
call.invoke: call.invoke("http://...", "");in Apache SOAP. The setTargetEndpointAddress method is used as a parameter to
call.setTargetEndpointAddress("http://...");in JAX-RPC.
Apache SOAP has a setTargetObjectURI method on the Call object that contains routing information for the request. JAX-RPC has no equivalent method. The information in the targetObjectURI is included in the targetEndpoint URI for JAX-RPC.
call.setMethodName("opName");in Apache SOAP. The setOperationName method, which accepts a QName instead of a String parameter, is used in JAX-RPC as illustrated in the following example:
call.setOperationName(new javax.xml.namespace.Qname("namespace", "opName"));
call.setEncodingStyleURI(org.apache.soap.Constants.NS_URI_SOAP_ENC);in Apache SOAP.The encoding style is set by a property of the Call object
call.setProperty(javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas. xmlsoap.org/soap/encoding/");in JAX-RPC.
Vector params = new Vector (); params.addElement (new org.apache.soap.rpc.Parameter(name, type, value, encodingURI)); // repeat for additional parameters... call.setParams (params);For JAX-RPC, the Call object is configured with parameter names and types without providing their values...
call.addParameter(name, xmlType, mode); // repeat for additional parameters call.setReturnType(type);Where
org.apache.soap.Response resp = call.invoke(endpointURI, "");in Apache SOAP.The parameter values are collected into an array and passed to call.invoke as illustrated in the following example:
Object resp = call.invoke(new Object[] {parm1, parm2,...});in JAX-RPC.
if resp.generatedFault then { org.apache.soap.Fault f = resp.getFault; f.getFaultCode(); f.getFaultString(); }in Apache SOAP.A java.rmi.RemoteException error is displayed in JAX-RPC if a SOAP fault occurs on the invocation.
try { ... call.invoke(...) } catch (java.rmi.RemoteException) ...
Parameter result = resp.getReturnValue(); return result.getValue();In JAX-RPC, the result of invoke is the returned object when no exception is displayed:
Object result = call.invoke(...); ... return result;
Develop a Web services client. This topic explains how to develop a Web services client based on the Web Services for J2EE specification.
Test the Web
services-enabled clients to make sure that the migration process is
successful and you can implement the Web services in a J2EE environment.