JAX-RPC 与 JAX-WS 的比较,第 4 部分:动态调用接口
2009-11-03 00:00:00 来源:WEB开发网JAX-RPC 的动态调用接口
JAX-RPC 的动态调用接口(Dynamic Invocation Interface,DII)是 Call 对象 (javax.xml.rpc.Call)。清单 2 中给出了使用 Call 对象调用清单 1 的 HelloWorld 服务的完整客户机主类。还可以在清单 2 的介绍中看到对抽象步骤进行了说明。
清单 2. JAX-RPC 的 DII 客户机 package com.ibm.samples.dii;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.encoding.XMLType;
public class HelloWorldClient {
public static void main(String[] args) {
try {
// Define the service.
QName serviceName = new QName(
"urn:helloWorld/sample/ibm/com",
"HelloWorldService");
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(serviceName);
// Create the dynamic invocation object from this service.
Call call = service.createCall();
call.setTargetEndpointAddress(
"http://localhost:9081/HelloWorldService/services/port");
// Build the message.
QName operationName = new QName(
"urn:helloWorld/sample/ibm/com",
"hello");
call.setOperationName(operationName);
call.addParameter(
"name", // parameter name
XMLType.XSD_STRING, // parameter XML type QName
String.class, // parameter Java type class
ParameterMode.IN); // parameter mode
call.setReturnType(XMLType.XSD_STRING);
call.setProperty(
Call.OPERATION_STYLE_PROPERTY,
"wrapped");
// Invoke the operation.
Object[] actualArgs = {"Georgia"};
String response = (String) call.invoke(actualArgs);
System.out.println("response = " + response);
}
catch (Throwable t) {
t.printStackTrace();
}
}
}
更多精彩
赞助商链接