读书人

Web Service之Axis1.x入门3

发布时间: 2012-09-11 10:49:03 作者: rapoo

Web Service之Axis1.x入门三

???? 继上一篇《Web Service之Axis1.x入门二》后,这是第三篇。上一篇主要讲的定制发布这种发布方式,那么我们这一篇将讲解传递JavaBean对象。

???? 在上一篇的环境下进行开发。

???一.服务端?

?? 1.服务端建立一个User类

?

??? 4.wsdl效果如下

???
Web Service之Axis1.x入门3

?? 二.客户端

?? 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.恭喜你,测试成功。

读书人网 >Web前端

热点推荐