材料:java sdk、Tomcat、mail.jar、soap.jar、activation.jar、xerces.jar、soap.war
安裝java sdk,
環(huán)境變量:
變量: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使得系統(tǒng)可以在任何路徑下識(shí)別java命令,編譯相關(guān)!
classpath只跟java運(yùn)行有關(guān),跟編譯無(wú)關(guān),
?java 中的tools.jar和dt.jar分別是干什么的???
rt.jar是JAVA基礎(chǔ)類(lèi)庫(kù),dt.jar是關(guān)于運(yùn)行環(huán)境的類(lèi)庫(kù),tools.jar是工具類(lèi)庫(kù)
設(shè)置在classpath里是為了讓你 import *
?rt.jar 默認(rèn)就在 根classloader的加載路徑里面 放在claspath是多此一舉
不光rt.jar jre\lib下面的大部分jar 都在這個(gè)路徑里
tools.jar 是系統(tǒng)用來(lái)編譯一個(gè)類(lèi)的時(shí)候用到的 也就是javac的時(shí)候用到
javac XXX.java
實(shí)際上就是運(yùn)行
java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java
javac就是對(duì)上面命令的封裝 所以tools.jar 也不用加到classpath里面
dt.jar是關(guān)于運(yùn)行環(huán)境的類(lèi)庫(kù),主要是swing的包?? 你要用到swing時(shí)最好加上
安裝Tomcat(不贅述)
將mail.jar、soap.jar、activation.jar、xerces.jar放到tomcat/lib下面,
tomcat運(yùn)行時(shí)會(huì)自動(dòng)加載tomcat/lib下的所有類(lèi)庫(kù)
將soap.war放到tomcat/webapps下,重啟tomcat。
會(huì)看到tomcat已經(jīng)解壓soap.war
到此搭建好了tomcat下的soap協(xié)議服務(wù)
測(cè)試:
輸入: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.
簡(jiǎn)單的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來(lái)部署
訪(fǎng)問(wèn) http://localhost:8080/soap/admin/ 點(diǎn)Deploy
填入
| ID: | urn:HelloWorld_SOAPService |
| Scope: | Application |
| Methods: | sayHi |
| Provider Type: | java |
| Java Provider - Provider Class: ????? | HelloWorld.SOAPService |
| Java Provider - Static? | No |
部署成功,點(diǎn)點(diǎn)擊 List ,將會(huì)看見(jiàn)你的服務(wù) urn:HelloWorld_SOAPService 已經(jīng)被部署進(jìn)來(lái)。點(diǎn)擊 urn:HelloWorld_SOAPService,會(huì)出現(xiàn)
?
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 | ? |
則說(shuō)明部署成功,否則檢查(填寫(xiě)是否正確、有沒(méi)有多填上了空格等),
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
運(yùn)行客服端將會(huì)出現(xiàn):
Passing to our deployed urn:HelloWorld_SOAPServiceour name (Superman):
and its answer is: Hello my friend, Superman! Glad to see you!
則整個(gè)soap通信圓滿(mǎn)完成
參考:
http://www.cnblogs.com/mingzi/archive/2009/03/23/1419385.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

