tomcat構成Soap

7361 ワード

材料:java sdk、Tomcat、mail.jar、soap.jar、activation.jar、xerces.jar、soap.war
Java sdkをインストールし、
環境変数:
変数:JAVAHOME=C:Program FilesJavajdk 1.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 jrelibの下の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 }

SOAPServicejavaをコンパイルします.ディレクトリ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
配置に成功しました.リストをクリックすると、サービス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("
Call 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