Axis开发WebService(二)

本文详细介绍了如何在WebService中通过Axis框架自定义传递和返回Object类型,包括服务端实现、部署配置及测试过程,展示了如何利用Java类进行复杂数据结构的远程调用。
当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());
    }

           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值