zoukankan      html  css  js  c++  java
  • 手把手教你用axis1.4搭建webservice(转)

    1、先下载axis jar包:axis-bin-1_4.zip。下载地址: http://ws.Apache.org/axis/。

    当然这个包其实是不全面的,像activation.jar之类的,完全的Lib会在附件里提供。

    2、解压好后,将webapps目录下的axis拷贝到tomcat_home的webapps下面。

    3、在myeclipse中新建一个web项目,取名叫testWebservice.并新建一个包名叫webservice.axis.wsdd,

    再新建一个class名叫:HelloWorldWSDD。

    HelloWorldWSDD源代码如下:

    Java代码  收藏代码
    1. package webservice.axis.wsdd;  
    2. public class CopyOfHelloWorldWSDD {  
    3.   
    4.     private int requestCount=0;  
    5.       
    6.     public String hello(String cardNo){  
    7.         requestCount++;  
    8.         System.out.println("requestCount="+requestCount);  
    9.         System.out.println("Received:"+cardNo);  
    10.         return "Hello"+cardNo;  
    11.     }  
    12.       
    13.       
    14.     public float add(float a,float b){  
    15.         requestCount++;  
    16.         String result="a="+a+",b"+b;  
    17.         System.out.println("requestCount"+requestCount);  
    18.         System.out.println("Received:"+result);  
    19.           
    20.         return a+b;  
    21.     }  
    22.       
    23. }  

    4、将tomcat_homewebappsaxisWEB-INFlib下面所有的jar包拷贝到项目中的Lib中。

    5、先部署一下web项目,再运行tomcat,运行http://localhost:8080/axis调试下是否安装成功。然后将tomcat_homewebappsaxisWEB-INFlib所有的jar包同时拷贝到tomcat_homelib下面。此时我们的webservice还不会出现在调试列表里,因为还有很多配置工作没有做。

    6、下面将tomcat_homewebapps estWebserviceWEB-INFclasses下的webservice文件夹复制到tomcat_homewebappsaxisWEB-INFclasses下面。这步的目的就是以后客户端访问axis时能看见我们的websevice.

    7、在tomcat_homewebappsaxisWEB-INF下面文件deploy.wsdd,在里面输入:

    Java代码  收藏代码
    1. <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
    2. <service name="HelloWorldWSDD" provider="java:RPC">  
    3. <parameter name="className" value="webservice.axis.wsdd.HelloWorldWSDD" />  
    4. <parameter name="allowedMethods" value="*" />  
    5. <parameter name="scope" value="request" />  
    6. </service>  
    7. </deployment>  

     8、运行CMD,进入目录到tomcat_homewebappsaxisWEB-INF,输入如下命令:

    Java代码  收藏代码
    1. java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient  deploy.wsdd  

     注意:运行此步时要保证tomcat是运行着的,否则会出现connection refuesed的错误。如果运行成功,会提示done processing.而且会生成一个文件server-config.wsdd。

    9、此时已经快完成了。可以在浏览器里输入http://localhost:8080/axis/services。看看有没有新增加一个叫HelloWorldWSDD的webservice.如果有,那么就是成功啦。

    其他简单测试方法:

    Java代码  收藏代码
    1. 1、在浏览器输入http://localhost:8080/axis/services/HelloWorldWSDD  
    2.   
    3. 2、在浏览器输入http://localhost:8080/axis/servlet/AxisServlet  
    4.   
    5. 2者都可以用来简单测试webservice是否处于可用状态。  

    10、编写客户端进行测试。在同样的包下建一个class叫Client

    客户端的核心就是引用url。

    源代码如下:

    Java代码  收藏代码
    1. package webservice.axis.wsdd;  
    2. import javax.xml.namespace.QName;  
    3.   
    4. import org.apache.axis.client.Call;  
    5. import org.apache.axis.client.Service;  
    6.   
    7. public class CopyOfClient {  
    8.       
    9.         public static void main(String args[]){  
    10.             try{  
    11.                 String serviceurl="http://localhost:8080/axis/services/HelloWorldWSDD";  
    12.                 Service service=new Service();  
    13.                 Call call=(Call)service.createCall();  
    14.                 call.setTargetEndpointAddress(serviceurl);  
    15.                 call.setOperationName(new QName(serviceurl,"hello"));  
    16.                 String result=(String)call.invoke(new Object[]{"123456"});  
    17.                   
    18.                 call.setOperationName(new QName(serviceurl,"add"));  
    19.                 Float returnValue=(Float)call.invoke(new Object[]{new Float(3.2),new Float(2.8)});  
    20.                 System.out.println("float return value is:"+returnValue);  
    21.                 if(result!=null){  
    22.                     System.out.println("result="+result);  
    23.                 }else{  
    24.                     System.out.println("result is null");  
    25.                 }  
    26.                   
    27.             }catch(Exception ex){  
    28.                 ex.printStackTrace();  
    29.             }  
    30.                   
    31.   
    32.         }  
    33.           
    34.           
    35.   
    36. }  

    运行结果是:float return value is:6

    result is Hello123456,

    下面对这两句重要的话进行解释:

    1. call.setOperationName(new QName(serviceurl,"hello"));  
    2.                 String result=(String)call.invoke(new Object[]{"123456"});  

    1、QName里面接的hello是指方法名。

    2、invoke里面接的123456是指方法的参数。

    参考资料:

    1、百度文库里面的:http://wendang.baidu.com/view/558a8f3143323968011c9279.html?from=rec&pos=3&weight=3&lastweight=2&count=5

    2、新浪上的:http://blog.sina.com.cn/s/blog_4b9b442c0100rd87.html

    3、ITEYE上的:http://hua04104.iteye.com/blog/850367

    4、http://blog.sina.com.cn/s/blog_6307f1940100ohyh.html

  • 相关阅读:
    C++重载运算符
    C++中的友元函数和友元类
    C++中的static关键字
    C++的new运算符和delete运算符
    git常用命令
    php+mysql+apache报错
    Nodejs 异步式 I/O 与事件式编程
    开始用Node.js编程
    Nodejs 模块
    Mac OS X上安装Node.js
  • 原文地址:https://www.cnblogs.com/yelongsan/p/5453880.html
Copyright © 2011-2022 走看看