测试环境:
websphere 3.5
apache soap 2.2
布署描述文件(deploymentdescriptor.xml):
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:addressmanager">
<isd:provider type="java"
scope="application"
methods="newaddress">
<isd:java class="soap.addressmanager"/>
</isd:provider>
<isd:faultlistener>org.apache.soap.server.domfaultlistener</isd:faultlistener>
<isd:mappings>
<isd:map encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="urn:xml-soap-mapping-test" qname="x:address"
javatype="soap.address"
java2xmlclassname="org.apache.soap.encoding.soapenc.beanserializer"
xml2javaclassname="org.apache.soap.encoding.soapenc.beanserializer"/>
</isd:mappings>
</isd:service>
布署批处理(deploy.bat):
java org.apache.soap.server.servicemanagerclient http://localhost/soap/servlet/rpcrouter deploy deploymentdescriptor.xml
pause
address.java:
package soap;
/**
* 此处插入类型说明。
* 创建日期:(2001-12-13 14:25:30)
* @author:administrator
*/
public class address {
public java.lang.string name;
public java.lang.string address;
/**
* 此处插入方法说明。
* 创建日期:(2001-12-13 14:26:08)
* @return java.lang.string
*/
public java.lang.string getaddress() {
return address;
}
/**
* 此处插入方法说明。
* 创建日期:(2001-12-13 14:25:53)
* @return java.lang.string
*/
public java.lang.string getname() {
return name;
}
/**
* 此处插入方法说明。
* 创建日期:(2001-12-13 14:26:08)
* @param newaddress java.lang.string
*/
public void setaddress(java.lang.string newaddress) {
address = newaddress;
}
/**
* 此处插入方法说明。
* 创建日期:(2001-12-13 14:25:53)
* @param newname java.lang.string
*/
public void setname(java.lang.string newname) {
name = newname;
}
}
addressmanager.java:
package soap;
import java.net.*;
import java.util.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import org.apache.soap.encoding.*;
import org.apache.soap.encoding.soapenc.*;
import org.apache.soap.util.xml.*;
/**
* 此处插入类型说明。
* 创建日期:(2001-12-13 14:27:05)
* @author:administrator
*/
public class addressmanager {
/**
* 启动应用程序。
* @param args 命令行自变量数组
*/
public static void main(java.lang.string[] args) {
soapmappingregistry registry = new soapmappingregistry();
beanserializer bs = new beanserializer();
registry.maptypes("http://schemas.xmlsoap.org/soap/encoding/", new qname("urn:xml-soap-mapping-test","address"), address.class, bs, bs);
string name = "何志强";
string address = "北京";
vector params = new vector();
params.add(new parameter("name", string.class, name, null));
params.add(new parameter("address", string.class, address, null));
call call = new call();
call.setsoapmappingregistry(registry);
call.settargetobjecturi("urn:addressmanager");
call.setmethodname("newaddress");
call.setencodingstyleuri(constants.ns_uri_soap_enc);
call.setparams(params);
try {
response res = call.invoke(new url("http://localhost/soap/servlet/rpcrouter"), "");
if ( res.generatedfault() ) {
system.out.println(res.getfault());
} else {
address ret = (address)res.getreturnvalue().getvalue();
system.out.print("姓名:");
system.out.println(ret.getname());
system.out.print("地址:");
system.out.println(ret.getaddress());
}
} catch (exception ex) {
ex.printstacktrace(system.out);
}
}
/**
* 此处插入方法说明。
* 创建日期:(2001-12-13 14:28:00)
* @return soap.address
* @param name java.lang.string
* @param address java.lang.string
*/
public address newaddress(string name, string address) {
address ret = new address();
ret.setname(name);
ret.setaddress(address);
return ret;
}
}
