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

被折叠的 条评论
为什么被折叠?



