zoukankan      html  css  js  c++  java
  • Axis通过wsdd部署Web Service

    axis网上的教程很多,不过搜来搜去,总是只有那么几篇。仔细看了一下那几篇文章,都感觉到不是自己想要的,所以自己整理了一篇分享一下。

    本文介绍axis应用的一个小例子,没有麻烦的命令行操作,只需照下面的步骤做就可以了。以下是详细的操作步骤。(注:本实例用的是axis,非axis2)

     

    1. 1.       环境准备

    l  MyEclipse 6.5

    l  Tomcat 6

    l  JDK 1.5

    l  axis(非axis2)

     

    1. 2.       新建web工程

    新建一web工程,工程名称为axistest。新建完成后,导入下图所示的axis相关的jar包。

     

     

    1. 3.       在web.xml中添加axis相关的配置信息

     

    [xhtml] view plain copy
    1. <servlet>  
    2.     <display-name>Apache-Axis Servlet</display-name>  
    3.     <servlet-name>AxisServlet</servlet-name>  
    4.     <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
    5. </servlet>  
    6.   
    7. <servlet>  
    8.     <display-name>Axis Admin Servlet</display-name>  
    9.     <servlet-name>AdminServlet</servlet-name>  
    10.     <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
    11.     <load-on-startup>100</load-on-startup>  
    12. </servlet>  
    13. <servlet-mapping>  
    14.     <servlet-name>AxisServlet</servlet-name>  
    15.     <url-pattern>/servlet/AxisServlet</url-pattern>  
    16. </servlet-mapping>  
    17. <servlet-mapping>  
    18.     <servlet-name>AxisServlet</servlet-name>  
    19.     <url-pattern>*.jws</url-pattern>  
    20. </servlet-mapping>  
    21. <servlet-mapping>  
    22.     <servlet-name>AxisServlet</servlet-name>  
    23.     <url-pattern>/services/*</url-pattern>  
    24. </servlet-mapping>  
    25.    <servlet-mapping>  
    26.     <servlet-name>AdminServlet</servlet-name>  
    27.     <url-pattern>/servlet/AdminServlet</url-pattern>  
    28. </servlet-mapping>  

     

    1. 4.       新建提供服务的Java

    在src下新建com包,在com包下新建HelloWorld类,HelloWorld的内容如下:

     

    [java] view plain copy
    1. package com;  
    2.   
    3. public class HelloWorld {  
    4.   
    5.     public String sayHello(String msg){  
    6.         if(null==msg || "".equals(msg)){  
    7.             return "您好!";  
    8.         }else{  
    9.             return "您好" + msg + "!";  
    10.         }  
    11.     }  
    12.       
    13.     public int sayAge(){  
    14.         return 28;  
    15.     }  
    16.   
    17. }  

      

    1. 5.       配置server-config.wsdd

    在WEB-INF下新建server-config.wsdd文件,内容如下:

     

    [xhtml] view plain copy
    1. <deployment xmlns="http://xml.apache.org/axis/wsdd/"  
    2.     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
    3.   
    4.     <!-- 处理器 -->  
    5.     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />  
    6.           
    7.     <!-- 一个服务 -->  
    8.     <!-- provider="java:RPC"  webservice是以javabean的形式提供的-->  
    9.     <service name="helloWorldService" provider="java:RPC">  
    10.         <!-- 指定类名 -->  
    11.         <parameter name="className" value="com.HelloWorld" />  
    12.         <!-- 类中允许访问的方法 -->  
    13.         <parameter name="allowedMethod" value="*"></parameter>  
    14.     </service>  
    15.       
    16.     <!-- 指定处理器 -->  
    17.     <transport name="http">  
    18.         <requestFlow>  
    19.             <handler type="URLMapper"/><!-- 引用上边的 -->  
    20.         </requestFlow>  
    21.     </transport>  
    22.       
    23. </deployment>  

    wsdd文件标签节点说明:

    deployment:表明这是一个axis部署描述文件;

    service:axis提供的一个web service服务。service标签中parameter allowedMethod用于指定一个以空格分隔的方法名,只有这些方法可以通过web service访问。也可以将这个值指定为“*”表示所有的方法都可以访问。

    provider:服务类型,共有四种,分别是RPC,Document,Wrapped和Message。详见org.apache.axis.providers包的API文档;

    parameter:用来设置Axis的各种属性;

    requestFlow:局的请求Handlers,在调用实际的服务之前调用;

    transport:定义了服务器端的传输方式

     

    至此web service相关的东西已经配置好,此时工程的目录结构如下

     

     

     

     

    1. 6.       部署到Tomcat测试

    将工程发布到Tomcat,在浏览器里访问http://127.0.0.1:9999/axistest/services,如果出现如下页面,则表示web service部署成功

     

     

    点击上面的wsdl链接,进入下图所示页面

     

    注意上面的红圈的namespace,下面测试QName有用到。

     

    1. 7.       客户端测试

    在com包下新建测试类,名称为ClientTest,内容如下:

     

    [java] view plain copy
    1. package com;  
    2.   
    3. import java.NET.MalformedURLException;  
    4. import java.rmi.RemoteException;  
    5.   
    6. import javax.xml.namespace.QName;  
    7. import javax.xml.rpc.ServiceException;  
    8.   
    9. import org.apache.axis.client.Call;  
    10. import org.apache.axis.client.Service;  
    11.   
    12. /** 
    13.  * @author 花非花雾非雾 
    14.  * @date 2010-12-24 
    15.  */  
    16. public class ClientTest {  
    17.   
    18.     public static void main(String[] args) throws MalformedURLException, RemoteException {  
    19.           
    20.         Service service = new Service();  
    21.         try {  
    22.               
    23.             Call call = (Call) service.createCall();  
    24.             //设置地址  
    25.             call.setTargetEndpointAddress(new java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));  
    26.             //设置要执行的方法  
    27.             call.setOperationName(new QName("http://com","sayHello"));  
    28.             //设置要传入参数,如果没有要传入的参数,则不要写这个  
    29.             call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);  
    30.             //设置返回的类型  
    31.             call.setReturnType(org.apache.axis.Constants.XSD_STRING);  
    32.               
    33.             String name = "花非花雾非雾";  
    34.             //执行,调用webservice  
    35.             String result = (String) call.invoke(new Object[]{name});  
    36.             System.out.println("返回的结果是:"+result);  
    37.               
    38.         } catch (ServiceException e) {  
    39.             e.printStackTrace();  
    40.         }  
    41.     }  
    42.   
    43. }  

      

    如果一切正常,运行结果如下:

    返回的结果是:您好花非花雾非雾!

     

    参考资料:

    1. axis 的官方资料
  • 相关阅读:
    阿蒂亚谈数学——我对《数学的统一性》的笔记
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.1
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
  • 原文地址:https://www.cnblogs.com/forestwolf/p/6187442.html
Copyright © 2011-2022 走看看