Axis开发WebService(二)

来源:互联网 发布:淘宝交易快照 编辑:程序博客网 时间:2024/06/10 06:12
当WebService需要传自定义的Object类型时,这篇博文就讲这个内容。
1、服务端程序
自定义的传参类:RequestModel .java和ResponseModel.java,这个类是一样,只是为了实验证明可以传送和返回自定义的类型。

package com.webservice.bean;public class RequestModel {    private String name;    private int age;    private String[] items;    private int[] prices;    private boolean checked;    public String getName() {        return name;    }    public int getAge() {        return age;    }    public String[] getItems() {        return items;    }    public int[] getPrices() {        return prices;    }    public boolean isChecked() {        return checked;    }    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }    public void setItems(String[] items) {        this.items = items;    }    public void setPrices(int[] prices) {        this.prices = prices;    }    public void setChecked(boolean checked) {        this.checked = checked;    }}package com.webservice.bean;public class ResponseModel {    private String name;    private int age;    private String[] items;    private int[] prices;    private boolean checked;    public String getName() {        return name;    }    public int getAge() {        return age;    }    public String[] getItems() {        return items;    }    public int[] getPrices() {        return prices;    }    public boolean isChecked() {        return checked;    }    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }    public void setItems(String[] items) {        this.items = items;    }    public void setPrices(int[] prices) {        this.prices = prices;    }    public void setChecked(boolean checked) {        this.checked = checked;    }    }
在上篇博文(Axis开发WebService)的基本上,Service.java添加doRequest2(RequestModel model)。
package com.webservice.service;

import com.webservice.bean.RequestModel;import com.webservice.bean.ResponseModel;public class Service {        public Service() {    }        public ResponseModel doRequest2(RequestModel model){        model.setChecked(true);        ResponseModel _model = new ResponseModel();        _model.setAge(model.getAge());        _model.setChecked(true);        _model.setItems(model.getItems());        _model.setName(model.getName());        _model.setPrices(model.getPrices());        return _model;    }        public String doRequest3(String str){        return str.toUpperCase();    }}



2.项目的WEB-INF目录deploy.wsdd的内容改成以下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">            <service name="CheckOrder" provider="java:RPC">          <parameter name="className" value="com.webservice.service.Service"/>          <parameter name="allowedMethods" value="doRequest2,doRequest3"/>          <beanMapping qname="myNS1:RequestModel" xmlns:myNS1="urn:Service"               languageSpecificType="java:com.webservice.bean.RequestModel"/>        <beanMapping qname="myNS2:ResponseModel" xmlns:myNS2="urn:Service"               languageSpecificType="java:com.webservice.bean.ResponseModel"/>             </service>  </deployment>
其中节点beanMapping就是配置自定义的参数类型的。
3、执行deploy.bat,server-config.wsdd内容变化了,再执行WSDL2Java.bat,com.webservice.client下多了RequestModel .java和ResponseModel.java。
4、测试

   @Test    public void test2() throws ServiceException, RemoteException{        ServiceService serviceService = new ServiceServiceLocator();        Service service = serviceService.getCheckOrder();        RequestModel model = new RequestModel();        model.setAge(10);        model.setName("LAM");        model.setItems(new String[]{"1","2"});        model.setPrices(new int[]{3,4});        ResponseModel _model = service.doRequest2(model);        System.out.println(_model.getAge()+_model.getName()+_model.isChecked());    }

           
原创粉丝点击