AXIS:简单的webservice开发例子

简单的webservice开发例子


作者:wjhdtx

摘自csdn

简单的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);                 }         }  }  

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...