阅读更多
自定义对象类的传递
package webservicedemo;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class CmsBean {
private String name = "";
private int userid=0;
public String getName() {
return name;
}
public void setName(String name){
this.name=name;
}
public int getUserid(){
return userid;
}
public void setUserid(int userid){
this.userid=userid;
}
}
以上是自定义用户类
package webservicedemo.bean;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import webservicedemo.CmsBean;
public class ServerBean {
private int count=0;
public ServerBean() {
}
public static void main(String[] args) {
ServerBean serverBean1 = new ServerBean();
/*CmsBean temp=new CmsBean();
temp.setName("abcd");
temp.setUserid(7);
serverBean1.showCmsBean(temp);*/
CmsBean tmp=serverBean1.getBean();
System.out.println("#########"+(tmp.getUserid()));
System.out.println("#########"+(tmp.getName()));
}
public CmsBean getBean(){
CmsBean temp=new CmsBean();
temp.setName("abcd");
temp.setUserid(8888);
return temp;
}
public int showCmsBean(CmsBean cmsbean){
count++;
System.out.println("#########"+(cmsbean.getUserid()));
System.out.println("#########"+(cmsbean.getName()));
return count;
}
}
以上是服务器端程序代码
package webservicedemo.bean;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.utils.Options;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import webservicedemo.CmsBean;
public class ClientBean {
public ClientBean() {
}
public static void main(String[] args) {
ClientBean clientBean1 = new ClientBean();
try{
//clientBean1.sendServer();
clientBean1.getServer();
}catch (Exception e){
e.printStackTrace();
}
}
public void getServer() throws Exception{
String endpoint="http://localhost/axis/services/ServerBean";
Service service = new Service();
Call call = (Call) service.createCall();
call.setMaintainSession(true);
QName qn = new QName( "urn:CmsBean", "CmsBean" );
call.registerTypeMapping(CmsBean.class , qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(CmsBean.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(CmsBean.class, qn));
call.setTargetEndpointAddress( new java.net.URL(endpoint));
call.setOperationName( new QName("ServerBean", "getBean") );
call.setReturnType(new QName("ServerBean", "getBean"));
CmsBean result=(CmsBean)call.invoke( new Object[] {});
System.out.println("#########"+(result.getUserid()));
System.out.println("#########"+(result.getName()));
}
public void sendServer() throws Exception{
String endpoint="http://localhost/axis/services/ServerBean";
CmsBean tmp=new CmsBean();
tmp.setName("abcd");
tmp.setUserid(168);
Service service = new Service();
Call call = (Call) service.createCall();
call.setMaintainSession(true);
QName qn = new QName( "urn:CmsBean", "CmsBean" );
call.registerTypeMapping(CmsBean.class , qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(CmsBean.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(CmsBean.class, qn));
call.setTargetEndpointAddress( new java.net.URL(endpoint));
call.setOperationName( new QName("ServerBean", "showCmsBean") );
call.addParameter( "arg1", qn, ParameterMode.IN);
call.setReturnType(XMLType.XSD_INT);
Integer result=(Integer)call.invoke( new Object[] {tmp});
System.out.println(result.intValue());
result=(Integer)call.invoke( new Object[] {tmp});
System.out.println(result.intValue());
}
}
以上为客户端程序代码
<service name="ServerBean" provider="java:RPC">
<!--<requestFlow>
<handler type="authen"/>
</requestFlow>-->
<parameter name="allowedRoles" value="*"/>
<parameter name="className" value="webservicedemo.bean.ServerBean"/>
<parameter name="scope" value="session"/>
<beanMapping qname="ns:CmsBean" xmlns:ns="urn:CmsBean" languageSpecificType="java:webservicedemo.CmsBean"/>
</service>
以上为服务器端配置文件
其中qname="ns:CmsBean" 声明的是
- <wsdl:message name="getBeanResponse">
<wsdl:part name="getBeanReturn" type="tns1:CmsBean" />
</wsdl:message>
WEB服务的自定义数据类型
xmlns:ns="urn:CmsBean"声明的是
- <wsdl:definitions targetNamespace="http://localhost/axis/services/ServerBean" xmlns:impl="http://localhost/axis/services/ServerBean" xmlns:intf="http://localhost/axis/services/ServerBean" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns1="urn:CmsBean" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
名称空间