jeffy

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            70 Posts :: 1 Stories :: 14 Comments :: 0 Trackbacks

          一、Axis安裝
          1.測試環(huán)境
              JDK 1.5
              Servlet Container: Tomcat 5.5
          2.下載地址:
          http://ws.apache.org/axis/

          3.解壓縮安裝包,將$AXIS_UNZIP_PATH\axis-version\webapps下的axis包拷貝到$TOMCAT_HOME\webapps\下,
          以下約定$AXIS_HOME為該$TOMCAT_HOME\webapps\axis目錄

          4.啟動tomcat,訪問http://localhost:8080/axis 檢查安裝是否成功

          5.設(shè)置classpath編寫setEnv.bat:


          set AXIS_HOME=$AXIS_UNZIP_HOME
          set CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;E:/thirdparty/activation/activation.jar;E:/thirdparty/activation/mail.jar


          二.使用axis支持web service的部署和開發(fā),最主要有兩種方式:

          (一)。Dynamic Invocation Interface ( DII)
          1.編寫服務(wù)端程序HelloClient

          public class HelloClient {
           ublic String getName(String name)
            
             
          return "hello "+
          name;
           
          }


          2.將源碼拷貝到AXIS_HOME下,重命名為 HelloClient.jws
          3.訪問連接http://localhost:8080/axis/HelloClient.jws?wsdl,頁面顯示axis自動生成的wsdl
          4.編寫訪問服務(wù)的客戶端 TestHelloClient.java

          import org.apache.axis.client.Call;
          import
           org.apache.axis.client.Service;
          import
           javax.xml.namespace.QName;
          import
           javax.xml.rpc.ServiceException;
          import
           java.net.MalformedURLException;
          import
           java.rmi.RemoteException;

          public class SayHelloClient2 
          {
          public static void main(String[] args) 
          {
          try 
          {
          String endpoint 
          = "http://localhost:8080/axis/HelloClient.jws"
          ;

          Service service 
          = new
           Service();
          Call call 
          = null
          ;

          call 
          =
           (Call) service.createCall();

          call.setOperationName(
          new
           QName(
          "http://localhost:8080/axis/HelloClient.jws""getName"
          ));
          call.setTargetEndpointAddress(
          new
           java.net.URL(endpoint));

          String ret 
          = (String) call.invoke(new Object[] {"zhangsan"}
          );
          System.out.println(
          "return value is " +
           ret);
          }
           catch (Exception ex) {
          ex.printStackTrace();
          }

          }

          }

          5.運(yùn)行TestHelloClient測試;

          (二)。 Stubs方式
          1.編寫服務(wù)端程序server,SayHello.java,編譯server.SayHello.java  

          package server;
          public class SayHello 
          {
          public
           String getName(String name)
          {
          return "hello "+
          name;
          }

          }

          2.編寫LogHandler.java

          import org.apache.axis.AxisFault;
          import
           org.apache.axis.Handler;
          import
           org.apache.axis.MessageContext;
          import
           org.apache.axis.handlers.BasicHandler;

          import
           java.util.Date;

          public class LogHandler extends BasicHandler 
          {
          public void invoke(MessageContext msgContext) throws
           AxisFault
          {
          /** Log an access each time we get invoked.
          */

          try {
          Handler serviceHandler 
          =
           msgContext.getService();

          Integer numAccesses 
          =

          (Integer)serviceHandler.getOption(
          "accesses");
          if (numAccesses == null
          )
          numAccesses 
          = new Integer(0
          );

          numAccesses 
          = new Integer(numAccesses.intValue() + 1
          );

          Date date 
          = new
           Date();
          String result 
          = date + ": service " +

          msgContext.getTargetService() 
          +
          " accessed " + numAccesses + " time.";
          serviceHandler.setOption(
          "accesses"
          , numAccesses);

          System.out.println(result);
          }
           catch (Exception e) {
          throw
           AxisFault.makeFault;
          }

          }

          }

          3..編寫wsdd文件

          deploy.wsdd
          <deployment xmlns="http://xml.apache.org/axis/wsdd/"

          xmlns:java
          ="http://xml.apache.org/axis/wsdd/providers/java"> 
             
          <handler name="print" type="java:LogHandler"/>
           
          <service name="sayhello" provider="java:RPC">

          <requestFlow>
          <handler type="print"/>
          </requestFlow>
          <parameter name="className" value="server.SayHello"/>
          <parameter name="allowedMethods" value="*"/> 
          </service>

          </deployment>

          4.將編譯后的文件拷貝到AXIS_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\axis\WEB-INF\classes

          5.發(fā)布服務(wù):
          java org.apache.axis.client.AdminClient -h localhost -p 8080 -s /axis/servlet/AxisServlet deploy.wsdd

          命令參數(shù)為:

          The following Options are available:

                  
          -l<url>
                   sets the AxisServlet URL
                  
          -h<
          hostName     sets the AxisServlet host
                  
          -p<portNumber>
            sets the AxisServlet port
                  
          -s<servletPath>
           sets the path to the AxisServlet
                  
          -f<fileName>
              specifies that a simple file protocol should be used
                  
          -u<username>
              sets the username
                  
          -w<password>
              sets the password
                  
          -d              sets the debug flag (for instance, -
          ddd would set it to
          3
          )
                  
          -t<name>
                  sets the transport chain touse

          Commands:

                  list            will list the currently deployed services
                  quit            will send a quit message to SimpleAxisServer
                  passwd          value changes the admin password

          Deployment Descriptor files:

          <deployment-descriptor-files>
           deploys or undeploys Axis components and
          web services described in these files

          If 
          -l or ---
          s are not set, the AdminClient will invoke
          http:
          //localhost:8080/axis/servlet/AxisServlet

          6.生成client stub文件
          a:方式1
          將SayHello.java拷貝到AXIS_HOME/下,重命名為SayHello.jws,執(zhí)行下面的命令生存client stub
          java org.apache.axis.wsdl.WSDL2Java -p client
          http://localhost:8080/axis/services/SayHello.jws?wsdl
          b:方式2
            執(zhí)行如下命令生成SayHello.wsdl
          java org.apache.axis.wsdl.Java2WSDL -oSayHello.wsdl -lhttp://localhost:8080/axis/services/SayHello -nsayhello server.SayHello
          執(zhí)行如下命令生成client stub
             java org.apache.axis.wsdl.WSDL2Java SayHello.wsdl -p client
          生成的stub client文件列表為:
          1。SayHello.java
          2。SayHelloService.java。
          3。SayHelloServiceLocator.java
          4。SayHelloSoapBindingStub.java

          7.編寫客戶端程序,編譯并執(zhí)行

          public class SayHelloClient {
          public static void main(String[] args) 
          {
          try 
          {

          SayHelloService service 
          = new
           client.
          SayHelloServiceLocator();
          client.SayHello_PortType client 
          =
           service.getSayHello();
          String retValue
          =client.getName("zhangsan"
          );
          System.out.println(retValue);


          }
           catch (Exception e) {
          System.err.println(
          "Execution failed. Exception: " +
           e);
          }

          }

          }
           

          8.開發(fā)自己的WEB應(yīng)用程序的web service ,需要在描述文件WEB-INF/web.xml文件中添加:

          <listener>
                  
          <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
              
          </listener>
              
            
          <servlet>
              
          <servlet-name>AxisServlet</servlet-name>
              
          <display-name>Apache-Axis Servlet</display-name>
              
          <servlet-class>
                  org.apache.axis.transport.http.AxisServlet
              
          </servlet-class>
            
          </servlet>

            
          <servlet>
              
          <servlet-name>AdminServlet</servlet-name>
              
          <display-name>Axis Admin Servlet</display-name>
              
          <servlet-class>
                  org.apache.axis.transport.http.AdminServlet
              
          </servlet-class>
              
          <load-on-startup>100</load-on-startup>
            
          </servlet>

            
          <servlet>
              
          <servlet-name>SOAPMonitorService</servlet-name>
              
          <display-name>SOAPMonitorService</display-name>
              
          <servlet-class>
                  org.apache.axis.monitor.SOAPMonitorService
              
          </servlet-class>
              
          <init-param>
                
          <param-name>SOAPMonitorPort</param-name>
                
          <param-value>5001</param-value>
              
          </init-param>
              
          <load-on-startup>100</load-on-startup>
            
          </servlet>

            
          <servlet-mapping>
              
          <servlet-name>AxisServlet</servlet-name>
              
          <url-pattern>/servlet/AxisServlet</url-pattern>
            
          </servlet-mapping>

            
          <servlet-mapping>
              
          <servlet-name>AxisServlet</servlet-name>
              
          <url-pattern>*.jws</url-pattern>
            
          </servlet-mapping>

            
          <servlet-mapping>
              
          <servlet-name>AxisServlet</servlet-name>
              
          <url-pattern>/services/*</url-pattern>
            
          </servlet-mapping>

            
          <servlet-mapping>
              
          <servlet-name>SOAPMonitorService</servlet-name>
              
          <url-pattern>/SOAPMonitor</url-pattern>
            
          </servlet-mapping>

            (申明:本文來源于網(wǎng)絡(luò),摘錄于此,僅為日后方便查看)
          posted on 2006-03-02 17:08 Live-in Java 閱讀(565) 評論(0)  編輯  收藏 所屬分類: Web Service

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 龙井市| 萍乡市| 富宁县| 鸡西市| 长宁县| 中方县| 饶平县| 将乐县| 晋城| 菏泽市| 揭西县| 西安市| 焉耆| 五大连池市| 土默特左旗| 温州市| 乌拉特后旗| 西安市| 格尔木市| 新兴县| 晋江市| 迭部县| 册亨县| 诸城市| 阿合奇县| 炉霍县| 扎鲁特旗| 筠连县| 乡宁县| 高台县| 江阴市| 武功县| 庆安县| 昌乐县| 涪陵区| 巴中市| 青海省| 堆龙德庆县| 霞浦县| 哈尔滨市| 阿拉善右旗|