乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      web service 開發(fā)實戰(zhàn)(dii,proxy,stub)

       Elena 2006-05-17
      一、axis安裝
      1.環(huán)境
      J2SE SDK 1.3 or 1.4: 我使用 1.4.2
      Servlet Container: 我使用Tomcat 5.0
      2.到 http://ws./axis/網(wǎng)站下載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.以上步驟執(zhí)行成功,可以開發(fā)webservice例子了

      axis支持三種web service的部署和開發(fā),分別為:
      1。Dynamic Invocation Interface ( DII)
      2。 Stubs方式
      3。Dynamic Proxy方式

      以下逐一講述web service在axis上的部署和開發(fā),設置classpath
      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

      二、編寫DII(Dynamic Invocation Interface )方式web服務
      1.編寫服務端程序HelloClient
      public class HelloClient {
      public String getName(String name)
      {
      return "hello "+name;
      }
      }

      2.將源碼拷貝到AXIS_HOME下,重命名為 HelloClient.jws
      3.訪問連接http://localhost:8080/axis/HelloClient.jws?wsdl,頁面顯示axis自動生成的wsdl
      4.編寫訪問服務的客戶端 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();
      }
      }
      }
      三、編寫Dynamic Proxy方式訪問服務
      1.編寫部署服務端程序,同上邊DII方式,本次仍使用上邊部署的HelloClient
      2.編寫代理接口
      public interface HelloClientInterface extends java.rmi.Remote {
      public String getName(String name) throws java.rmi.RemoteException;
      }
      3.編寫并執(zhí)行客戶端程序TestHelloClient.java

      import javax.xml.rpc.Service;
      import javax.xml.rpc.ServiceFactory;
      import java.net.URL;
      import javax.xml.namespace.QName;

      public class TestHelloClient {
      public static void main(String[] args) {
      try
      {
      String wsdlUrl = "http://localhost:8080/axis/HelloClient.jws?wsdl";
      String nameSpaceUri = "http://localhost:8080/axis/HelloClient.jws";
      String serviceName = "HelloClientService";
      String portName = "HelloClient";

      ServiceFactory serviceFactory = ServiceFactory.newInstance();
      Service afService = serviceFactory.createService(new URL(wsdlUrl),
      new QName(nameSpaceUri, serviceName));
      HelloClientInterface proxy = (HelloClientInterface)
      afService.getPort(new QName(
      nameSpaceUri, portName), HelloClientInterface.class);
      System.out.println("return value is "+proxy.getName("john") ) ;
      }catch(Exception ex)
      {
      ex.printStackTrace() ;
      }
      }
      }

      四、編寫wsdd發(fā)布web服務,編寫stub client訪問web服務

      1.編寫服務端程序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 + " timeMoon.";
      serviceHandler.setOption("accesses", numAccesses);

      System.out.println(result);
      } catch (Exception e) {
      throw AxisFault.makeFaultEnvelope;
      }
      }
      }
      3..編寫wsdd文件
      deploy.wsdd
      <deployment xmlns="http://xml./axis/wsdd/"
      xmlns:java="http://xml./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>

      3.將編譯后的文件拷貝到AXIS_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\axis\WEB-INF\classes
      4.發(fā)布服務:
      java org.apache.axis.client.AdminClient deploy.wsdd
      5.生成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
      6.編寫客戶端程序,編譯并執(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);
      }
      }
      }



        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多