The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          安裝Apache SOAP
            下載需要的資源:
             Apache SOAP 2.3 http://apache.linuxforum.net/dist/ws/soap/version-2.3.1/soa
          p-bin-2.3.1.zip
             mail.jar from JavaMail http://java.sun.com/products/javamail
             activation.jar from JavaBeans Activation Framework http://java.sun.com/prod
          ucts/beans/glasgow/jaf.html
             a JAXP compatible, namespace-aware XML parser such as Apache Xerces (v1.1.2
           or later) http://xml.apache.org/xerces-j
             Tomcat 4.1.x http://jakarta.apache.org/tomcat
             安裝tomcat:
                網上很多介紹的文章,這里不再贅述。
             安裝Apache SOAP:
                把下載回來的soap-2.3.1.zip解壓到c:\soap-2_3_1。把c:\soap-2_3_1\lib下的兩
          個文件復制到%TOMCAT_HOME%\common\lib下面;把c:\soap-2_3_1\webapps下的soap.war
          復制到%TOMCAT_HOME%\webapps下面;把其他的幾個jar文件(mail.jar,activation.jar,x
          erces.jar)復制到%TOMCAT_HOME%\common\lib下面。
             設置classpath變量:
                把上面的四個jar文件路徑添加到classpath變量中
                %TOMCAT_HOME%\common\lib\soap.jar
                %TOMCAT_HOME%\common\lib\mail.jar
                %TOMCAT_HOME%\common\lib\activation.jar
                %TOMCAT_HOME%\common\lib\xerces.jar
                PS:我的做法是把這四個jar文件合成一個soap-all.jar文件,并不路徑添加到clas
          spath中去,這樣省點事。
             測試客戶端配置:
                1.打開web瀏覽器,訪問http://127.0.0.1:8080/soap/servlet/rpcrouter,如果出
          現提示: “Sorry, I don't speak via HTTP GET- you have to use HTTP POST to tal
          k to me”,第一步測試通過。
                2.命令行測試:在命令行下輸入下面命令 
                  >java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:808
          0/soap/servlet/rpcrouter list
                  如果輸出只是"Deployed Services:",沒有得到其他任何輸出信息,否則請檢查
          classpath配置是否正確
          運行HelloWorldService服務
             HelloWorldService.java
             __________________________________   
               public class HelloWorldService
              {
                String getMessage()
                 {
                  return "Hello World!";
                 }
              }
             _________________________________
             創建部署描述符:
             部署描述符其實就是一個xml文件。當SOAP請求被發送給org.apache.soap.server.htt
          p.RPCRouterServlet時,RPCRouterServlet使用部署描述符來決定把請求路由至何處。下
          面將敘述用Apache SOAP的命令行工具注冊服務。
             HelloWorld.xml
             ---------------------------------
             <?xml version="1.0"?>
              <isd:service xmlns:isd="     <isd:provider type="java" scope="Request" methods="getMessage">
               <isd:java class="HelloWorldService" static="false"/>
               </isd:provider>
             </isd:service>
             ---------------------------------
             注冊服務:
             在命令行下輸入(注意要在HelloWorldService.xml文件所在目錄下)
             > java org.apache.soap.server.ServiceManagerClient
          http://127.0.0.1:8080/so
          ap/servlet/rpcrouter deploy HelloWorld.xml
             如果沒有錯誤提示則注冊成功,可以用下面的幾個命令來查看已經注冊的服務
             > java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so
          ap/servlet/rpcrouter list
             出現提示“Deployed Services: urn:HelloWorldService”
             注銷服務:
             > java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so
          ap/servlet/rpcrouter undelpoy "urn:HelloWorldService"
             還可以查詢服務屬性:
             > java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so
          ap/servlet/rpcrouter query "urn:HelloWorldService"
            HelloWorld服務客戶端
            HelloWorldClient.java
            _______________________
          import org.apache.soap.Constants;
          import java.net.URL;
          import org.apache.soap.Fault;
          import org.apache.soap.rpc.Call;
          import org.apache.soap.rpc.Response;
          import org.apache.soap.rpc.Parameter;

          public class HelloWorldClient {
            static String DEFAULT_ENDPOINT = "http://localhost:8080/soap/servlet/rpcrout
          er";

            public static void main(String args[]) throws Exception {

              String endPoint = DEFAULT_ENDPOINT;

              //Process Arguments
              if (args.length == 1)
                endPoint = args[0];
              else if (args.length > 1)
                System.out.println("java HelloWorldClient [endpoint]");

                // Build the SOAP RPC request message using the Call object
                Call call = new Call();
                call.setTargetObjectURI("urn:HelloWorldService");
                call.setMethodName("getMessage");
                call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

                // Create a URL object, which represents the endpoint
                URL url = new URL(endPoint);

                // Send the SOAP RPC request message using invoke() method
                Response resp = call.invoke(url, "");

                // Check the response.
                if (resp.generatedFault()) { // Error Occured
                  Fault fault = resp.getFault();
                  System.out.println("The Following Error Occured: ");
                  System.out.println("  Fault Code   = " + fault.getFaultCode());  
                  System.out.println("  Fault String = " + fault.getFaultString());
                } else { // Completed Successfully
                  Parameter result = resp.getReturnValue();
                  System.out.println(result.getValue());
                }
            }
          }
          -----------------------------------------------
               運行服務:
               首先把HelloWorldService.class打包成jar文件放到%tomcat_home%/common/lib或者
          直接把HelloWorldService.class放到%tomcat_home%/common/classes下
               按照上面講的方法注冊服務,然后運行HelloWorldClient,屏幕輸出"HelloWorld!"

           

          posted on 2013-05-31 11:03 Eric_jiang 閱讀(238) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 黄山市| 湛江市| 柞水县| 德清县| 车险| 罗定市| 凤阳县| 梅州市| 库尔勒市| 江门市| 山阳县| 满城县| 鄱阳县| 靖边县| 三都| 淳化县| 稻城县| 富顺县| 章丘市| 大化| 黑龙江省| 焉耆| 曲阜市| 界首市| 特克斯县| 柘城县| 泸水县| 苏尼特右旗| 富川| 芜湖市| 汨罗市| 亚东县| 卓资县| 上饶市| 绥江县| 庄浪县| 昭苏县| 武川县| 灌南县| 万荣县| 宁化县|