zoukankan      html  css  js  c++  java
  • JAVA写webservice例子了

    webservice例子了  
       
      Axis支持三种web   service的部署和开发,分别为:  
       
      1、Dynamic   Invocation   Interface   (   DII)  
       
      2、Stubs方式  
       
      3、Dynamic   Proxy方式  
       
      二、编写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、编写并执行客户端程序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发布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   +   "   time(s).";  
      serviceHandler.setOption  
      ("accesses",   numAccesses);  
      System.out.println(result);  
                      }   catch   (Exception   e)  
      {  
                              throw   AxisFault.makeFault(e);  
                      }  
              }  
      }  
         
       
       
       
      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>  
         
       
       
       
      3、将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes    
       
      4、发布服务:    
       
      java   org.apache.Axis.client.AdminClient   deploy.wsdd    
       
      5、生成client   stub文件    
       
      a:方式1    
       
      将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,    
       
      执行下面的命令生存client   stub    
       
       
      java   org.apache.Axis.wsdl.WSDL2Java    
      -p   client     http://localhost:8080  
      /Axis/services/SayHello.jws?wsdl  
         
       
       
       
      b:方式2    
       
      执行如下命令生成SayHello.wsdl    
       
       
      java   org.apache.Axis.wsdl.Java2WSDL  
      -oSayHello.wsdl   -lhttp://localhost:8080  
      /Axis/services/SayHello   -nsayhello   server.SayHello  
         
       
       
       
      执行如下命令生成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、编写客户端程序,编译并执行    
       
       
      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);  
                      }  
              }  
      }   
         

  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/im/p/1279179.html
Copyright © 2011-2022 走看看