首先,我們要創建一個SOAP Service。下麵是它的代碼,請不要忘記將它放入HelloWorld/ 目錄中(必須被包含在你的CLASSPATH中):
1: // SOAPService.java
2: package HelloWorld;
3: public class SOAPService {
4: public String sayHi(String x) {
5: return("Hello my friend, " + x + "! Glad to see you!");
6: }
7: }
添加任何注釋也是很容易的。要編譯它,隻需要用下列命令:
javac SOAPService.java
第二步,一旦我們準備好了SOAP Service,我們需要用SOAP Service Manager來部署它。這個可以通過很多方式來實現,但是為了能讓初學SOAP的讀者更容易理解SOAP,我提供了一個最容易的方式。我們假設你的Web Server(Tomcat或其他)已經正常運行,並且你已經正確安裝了SOAP。那麼當瀏覽器訪問http://localhost:8080/soap/,你會看見Apache SOAP的歡迎頁麵。點擊Run the admin client ,然後 Deploy。你會得到一個屏幕顯示,在那裏你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表單域中。你能忽略其他所有的表單域,除非你真的需要它們的信息。我們的"HelloWorld"例子不需要它們,所以,我們填的下麵的值:
ID: urn:HelloWorld_SOAPService
Scope: Application
Methods: sayHi
Provider Type: java
Java Provider - Provider Class: HelloWorld.SOAPService
Java Provider - Static? No
一些注釋:ID是我們要從SOAP Client標識我們的SOAP Service的唯一名字。Method包含SOAP Service提供的一係列方法。JAVA Provider-Provider Class是SOAP Service Java類的名字。
現在,點擊Deploy 按鈕,那麼你的服務會被部署。再次強調,請注意正確設置CLASSPATH環境變量。然後,你的HelloWorld.SOAPService類能夠被找到,並且所有必需的jar包也能被找到。這是個幾乎每個人都會犯的普通錯誤。現在,你能夠點擊 List ,將會看見你的服務已經被部署進來。
最後,讓我們來創建一個SOAP Client。代碼看起來有點複雜,但是在現實中不會隻有這麼點長。
1: // HelloWorldClient.java
2: import java.io.*;
3: import java.net.*;
4: import java.util.*;
5: import org.apache.soap.*;
6: import org.apache.soap.rpc.*;
7: public class HelloWorldClient {
8: public static void main(String[] arg) throws Exception {
9: Call c = null;
10: URL url = null;
11: Vector params = null;
12: Response rep = null;
13: String ourName = "Superman";
14: String ourUrn = "urn:HelloWorld_SOAPService";
15: String ourMethod = "sayHi";
16: url = new URL("http://localhost:8080/soap/servlet/
rpcrouter");
17: System.out.println("Passing to our deployed "+ourUrn+"
our name ("+ourName+"): ");
18: c = new Call();
19: c.setTargetObjectURI(ourUrn);
20: c.setMethodName(ourMethod);
21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
22: params = new Vector();
23: params.addElement(new Parameter("ourName", String.class,
ourName, null));
24: c.setParams(params);