首先下載soap,把soap.war放到tomcat/webapp/目錄下,在classpath下面加入soap.jar、mail.jar和 activation.jar,然后創建一個Service和Client,把Service.class放到 tomcat/webapp/soap/WEB-INF/classes目錄下,然后把mail.jar和activation.jar放到 tomcat/webapp/soap/WEB-INF/lib下面,并寫一個配置文件用于部署服務。
<isd:service
?? xmlns:isd="http://xml.apache.org/xml-soap/deployment"
?? id="urn:service" checkMustUnderstands="true">
????? <isd:provider type="java" scope="Request" methods="setAlarm">
????? <isd:java class="work.Service" static="false"/>
?? </isd:provider>
</isd:service>
上面的work.Service是類的全名,setAlarm是提供的服務名,urn:service是URI。再寫一個腳本來調用配置文件部署服務
java org.apache.soap.server.ServiceManagerClient
http://localhost:8080/soap/servlet/rpcrouter deploy deploy.xml
啟動Tomcat之后,啟動腳本,然后執行Client代碼就可以了,Client的主體代碼很簡單,代碼里面就不加入注釋了。
??
??? Call call = new Call ();
??? call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
??? call.setTargetObjectURI ("urn:service");
??? call.setMethodName ("setAlarm");
??? Parameter param = new Parameter("alarm", String.class, alarm, Constants.NS_URI_SOAP_ENC);
??? Vector paramList = new Vector();
??? paramList.addElement(param);
??? call.setParams (paramList);
??? URL url = new URL ("
http://localhost:8080/soap/servlet/rpcrouter");
??? Response resp = call.invoke (url, "");
??? if (!resp.generatedFault()) {
????? // Extract Return value
????? Parameter result = resp.getReturnValue ();
????? String greeting = (String) result.getValue();
????? return greeting;
??? }
??? else {
????? //? Extract Fault Code and String
????? Fault f = resp.getFault();
????? String faultCode = f.getFaultCode();
????? String faultString = f.getFaultString();
????? System.err.println("Fault Occurred (details follow):");
????? System.err.println("Fault Code:? "+faultCode);
????? System.err.println("Fault String:? "+faultString);
????? return new String ("Fault Occurred.? No greeting for you!");
??? }