Web Service之Axis1.x入门三
???? 继上一篇《Web Service之Axis1.x入门二》后,这是第三篇。上一篇主要讲的定制发布这种发布方式,那么我们这一篇将讲解传递JavaBean对象。
???? 在上一篇的环境下进行开发。
???一.服务端?
?? 1.服务端建立一个User类
?
??? 4.wsdl效果如下
???
?? 二.客户端
?? 1.客户端User类
?
package client;import java.net.MalformedURLException;import java.net.URL;import java.rmi.RemoteException;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import javax.xml.rpc.ServiceException;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.ser.BeanDeserializerFactory;import org.apache.axis.encoding.ser.BeanSerializerFactory;import client.bean.User;/** * @author Tankiy * @since 2011 */public class UserClient { /** * @param args * @throws MalformedURLException * @throws Exception */ public static void main(String[] args) throws ServiceException, RemoteException, MalformedURLException { //目标地址 String url = "http://localhost:8999/User/services/UserServer"; //只是这里修改下 //提供接口名 String serviceName = "sayHello"; //创建服务对象 Service service = new Service(); //创建调用对象 Call call = (Call) service.createCall(); //设置调用JavaBean的命名空间 QName qn = new QName("urn:UserServer", "User"); call.registerTypeMapping(User.class, qn, new BeanSerializerFactory(User.class, qn), new BeanDeserializerFactory(User.class, qn)); call.setTargetEndpointAddress(new URL(url)); //调用的服务器端方法 call.setOperationName(new QName("User", "getUser")); //设置返回的类型 call.setReturnType(qn, User.class); User user = (User)call.invoke(new Object[]{}); if(user != null) { System.out.println(user.getUserName()); } } }?
? 输出结果为Tankiy.恭喜你,测试成功。