J2EE社區

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          java Web Service axis (實例一) server-config.wsdd生成工具

          Posted on 2010-08-18 17:20 xcp 閱讀(7181) 評論(0)  編輯  收藏 所屬分類: SOA
          一、第一個實例

          (一).服務端
          1.服務類(HelloService),加入需要的幾個包
          package cn.gov.luzhou.SiteServer.user.business.webService;

          public class HelloService {
              public String sayHello() {
                  return "Hello";
              }

              public String sayHelloToPerson(String name) {
                  if (name == null || name.equals("")) {
                      name = "nobody";
                  }
                  return "Hello " + name;
              }
          }
          2.WEB-INF新建一個deploy.wsdd
          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
              
          <service name="HelloServices" provider="java:RPC">
                  
          <parameter name="className" value="cn.gov.luzhou.SiteServer.user.business.webService.HelloService"/>
                  
          <parameter name="allowedMethods" value="*"/>
              
          </service>
          </deployment>
          3.Web Service有3種部署方式(Dynamic Invocation Interface ( DII),Dynamic Proxy方式 ,Stubs方式)在這我們使用Stubs方式

              a.提供一個小工具:deploywebservice.bat為了生成server-config.wsdd

          set Axis_Lib=D:\jar
          set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
          %Java_Cmd%  org.apache.axis.client.AdminClient -lhttp://localhost:8080/EGSS_User/services/AdminService deploy.wsdd
            --->說明:d:\jar就是下載下來的axis包的jar路徑,解析的時候要用戶,將其添加到環境變量;deploy.wsdd就是部署說明文件
               或者直接設置環境變量
           
          // 環境變量設置
              A. Client(Windows 2000/NT/XP)
                   set AXIS_HOME 
          = c:\axis
                   set AXIS_LIB  
          = %AXIS_HOME%\lib
                   set AXISCLASSPATH 
          = %AXIS_LIB%\axis.jar;
                                       
          %AXIS_LIB%\commons-discovery.jar;
                                       
          %AXIS_LIB%\commons-logging.jar;
                                       
          %AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
                                       
          %AXIS_LIB%\log4j-1.2.8.jar;
                                       
          %AXIS_LIB%\xml-apis.jar;
                                       
          %AXIS_LIB%\xercesImpl.jar
               B. Server(Unix
          +Tomcat4.1.X)
                              set AXIS_HOME
          =/usr/axis
                   set AXIS_LIB
          =$AXIS_HOME/lib
                   set AXISCLASSPATH
          =$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:
                                     $AXIS_LIB
          /commons-logging.jar:
                                     $AXIS_LIB
          /jaxrpc.jar:$AXIS_LIB/saaj.jar:
                                     $AXIS_LIB
          /log4j-1.2.8.jar:$AXIS_LIB/xml-apis.jar:
                                     $AXIS_LIB
          /xercesImpl.jar
                   export AXIS_HOME;
                   export AXIS_LIB; 
                   export AXISCLASSPATH
          //************ =============================
          // deploy service to WEB-INF/server-config.wsdd
          java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient
              
          -lhttp://localhost:8080/axistest/services/AdminService 
              src/com/augmentum/roger/axis/svr/deploy.wsdd

             b.運行:deploywebservice.bat
              將會生成一個文件,我就可以通過http://localhost:8080/EGSS_User/services/HelloServices.wsdl請求查看了




          (二).客戶端
          package two;

          import java.io.IOException;
          import java.net.MalformedURLException;

          import javax.xml.namespace.QName;
          import javax.xml.rpc.ServiceException;

          import org.apache.axis.client.Call;
          import org.apache.axis.client.Service;
          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;

          /**
           * 
           * 測試調用WebService
           
          */

          public class TestHelloService {
              
          private static final Log log = LogFactory.getLog(TestHelloService.class);
              
          private static final String HELLO_SERVICE_ENDPOINT = "http://localhost:8080/EGSS_User/services/HelloServices?wsdl";

              
          public static void main(String[] args) {
                  TestHelloService tester 
          = new TestHelloService();
                  tester.callSayHelloToPerson();
              }


              
          public void callSayHello() {
                  
          try {
                      Service service 
          = new Service();
                      
                      Call call 
          = (Call) service.createCall();
                      call.setTargetEndpointAddress(
          new java.net.URL(HELLO_SERVICE_ENDPOINT));
                      call.setOperationName(
          new QName("1.91","sayHello"));
                      call.setReturnType(org.apache.axis.Constants.XSD_STRING);
                      
          try {
                          String ret 
          = (String) call.invoke(new Object[] {});
                          System.out.println(
          "The return value is:" + ret);
                          
          return;
                      }
           catch (IOException e) {
                          e.printStackTrace();
                      }

                  }
           catch (MalformedURLException e) {
                      e.printStackTrace();
                  }
           catch (ServiceException e) {
                      e.printStackTrace();
                  }

                  log.error(
          "call sayHello service error!");
              }


              
          public void callSayHelloToPerson() {
                  
          try {
                      Service service 
          = new Service();
                      Call call 
          = (Call) service.createCall();
                      call.setTargetEndpointAddress(
          new java.net.URL(HELLO_SERVICE_ENDPOINT));
                      call.setOperationName(
          new QName("http://webservice.sinosoft.com/","sayHelloToPerson"));
                      call.addParameter(
          "name", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
                      call.setReturnType(org.apache.axis.Constants.XSD_STRING);
                      
          try {
                          String ret 
          = (String) call.invoke(new Object[] "向才鵬" });
                          System.out.println(
          "The return value is:" + ret);
                          
          return;
                      }
           catch (IOException e) {
                          e.printStackTrace();
                      }

                  }
           catch (MalformedURLException e) {
                      e.printStackTrace();
                  }
           catch (ServiceException e) {
                      e.printStackTrace();
                  }

                  log.error(
          "call sayHello service error!");
              }

          }

          OK了
          http://rogershi.blogbus.com/logs/205853.html


          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
          mail: 聯系我


          主站蜘蛛池模板: 金山区| 土默特右旗| 股票| 景宁| 新乡县| 东乡族自治县| 新泰市| 鲜城| 普陀区| 厦门市| 平邑县| 泸州市| 岐山县| 荃湾区| 务川| 平凉市| 和静县| 赤水市| 罗山县| 海林市| 囊谦县| 潜江市| 张家港市| 玛多县| 永靖县| 缙云县| 崇信县| 习水县| 张家港市| 安塞县| 桐柏县| 榆林市| 昌图县| 鄱阳县| 德钦县| 元谋县| 东乡| 二手房| 吴忠市| 马龙县| 湟中县|