第三章 實例講解:Java中的SOAP技術(2 / 3)

首先,我們要創建一個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);