当WebService需要传自定义的Object类型时,这篇博文就讲这个内容。
1、服务端程序
自定义的传参类:RequestModel .java和ResponseModel.java,这个类是一样,只是为了实验证明可以传送和返回自定义的类型。
package com.webservice.service;
2.项目的WEB-INF目录deploy.wsdd的内容改成以下:
3、执行deploy.bat,server-config.wsdd内容变化了,再执行WSDL2Java.bat,com.webservice.client下多了RequestModel .java和ResponseModel.java。
4、测试
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()); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。