材料:java sdk、Tomcat、mail.jar、soap.jar、activation.jar、xerces.jar、soap.war
安裝java sdk,
環境變量:
變量:JAVAHOME=C:\Program Files\Java\jdk1.6.0_22
path=%JAVAHOME%\bin;%JAVAHOME%\jre\bin;
classpath=.;%JAVAHOME%\lib\dt.jar;%JAVAHOME%\lib\tools.jar;
Path使得系統可以在任何路徑下識別java命令,編譯相關!
classpath只跟java運行有關,跟編譯無關,
?java 中的tools.jar和dt.jar分別是干什么的???
rt.jar是JAVA基礎類庫,dt.jar是關于運行環境的類庫,tools.jar是工具類庫
設置在classpath里是為了讓你 import *
?rt.jar 默認就在 根classloader的加載路徑里面 放在claspath是多此一舉
不光rt.jar jre\lib下面的大部分jar 都在這個路徑里
tools.jar 是系統用來編譯一個類的時候用到的 也就是javac的時候用到
javac XXX.java
實際上就是運行
java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java
javac就是對上面命令的封裝 所以tools.jar 也不用加到classpath里面
dt.jar是關于運行環境的類庫,主要是swing的包?? 你要用到swing時最好加上
安裝Tomcat(不贅述)
將mail.jar、soap.jar、activation.jar、xerces.jar放到tomcat/lib下面,
tomcat運行時會自動加載tomcat/lib下的所有類庫
將soap.war放到tomcat/webapps下,重啟tomcat。
會看到tomcat已經解壓soap.war
到此搭建好了tomcat下的soap協議服務
測試:
輸入:http://localhost:8080/soap/servlet/rpcrouter
成功則輸出:
???????? SOAP RPC Router
????????????????? Sorry, I don't speak via HTTP GET- you have to use HTTP POST to talk to me.
簡單的soap程序
SOAPService.java
1 package HelloWorld;
2 public class SOAPService {
3 public String sayHi(String x) {
4 return ("Hello my friend, " + x + "! Glad to see you!");
5 }
6 }
編譯SOAPService.java。將目錄 HelloWorld/拷貝到tomcat/webapps/soap/WEB-INF/classes/目錄下??
用SOAP Service Manager來部署
訪問 http://localhost:8080/soap/admin/ 點Deploy
填入
ID: | urn:HelloWorld_SOAPService |
Scope: | Application |
Methods: | sayHi |
Provider Type: | java |
Java Provider - Provider Class: ????? | HelloWorld.SOAPService |
Java Provider - Static? | No |
部署成功,點點擊 List ,將會看見你的服務 urn:HelloWorld_SOAPService 已經被部署進來。點擊 urn:HelloWorld_SOAPService,會出現
?
Deployed Service Information
?
'urn:HelloWorld_SOAPService' Service Deployment Descriptor |
|
---|---|
Property | Details |
ID | urn:HelloWorld_SOAPService |
Scope | Application |
Provider Type | java |
Provider Class | HelloWorld.SOAPService |
Use Static Class | false |
Methods | sayHi |
Type Mappings | ? |
Default Mapping Registry Class | ? |
則說明部署成功,否則檢查(填寫是否正確、有沒有多填上了空格等),
soap客服端:
?
1 import java.net.*;
2 import java.util.*;
3 import org.apache.soap.*;
4 import org.apache.soap.rpc.*;
5 public class HelloWorldClient {
6 public static void main(String[] arg) throws Exception {
7 Call c = null ;
8 URL url = null ;
9 Vector params = null ;
10 Response rep = null ;
11 String ourName = "Superman";
12 String ourUrn = "urn:HelloWorld_SOAPService";
13 String ourMethod = "sayHi";
14 url = new URL("http://localhost:8080/soap/servlet/rpcrouter");
15 System.out.println("Passing to our deployed "+ourUrn+"our name ("+ourName+"): ");
16 c = new Call();
17 c.setTargetObjectURI(ourUrn);
18 c.setMethodName(ourMethod);
19 c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
20 params = new Vector();
21 params.addElement( new Parameter("ourName", String. class ,ourName, null ));
22 c.setParams(params);
23 System.out.print("and its answer is: ");
24 rep = c.invoke(url, "");
25 if (rep.generatedFault()) {
26 Fault fault = rep.getFault();
27 System.out.println("\nCall failed!");
28 System.out.println("Code = " + fault.getFaultCode());
29 System.out.println("String = " + fault.getFaultString());
30 } else {
31 Parameter result = rep.getReturnValue();
32 System.out.print(result.getValue());
33 System.out.println();
34 }
35 }
36 }
注:需要引入mail.jar和soap.jar
運行客服端將會出現:
Passing to our deployed urn:HelloWorld_SOAPServiceour name (Superman):
and its answer is: Hello my friend, Superman! Glad to see you!
則整個soap通信圓滿完成
參考:
http://www.cnblogs.com/mingzi/archive/2009/03/23/1419385.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
