利用Apache AXIS 1 发布WebService

最近在论坛遇到很多朋友问AXIS发布webService的问题,这个问题已经回答了很多次了,现在特别发布一文章,说明AXIS 1的基本用法。


 //很庆幸,CSDN的发文编辑器已经改版本,不那么难编辑了。


首先,AXIS 是apache的作品。


1.到apache去下载相关的包,包括axis.jar、axis-ant.jar、commons-discovery-0.2.jar等。将jar包放到WEB-INF/lib下面

利用Apache AXIS 1 发布WebService_第1张图片


2.在WEB.XML中按如下配置,直接copy进去就可以

[html] view plain copy
  1. <servlet>  
  2.   <servlet-name>AxisServlet</servlet-name>  
  3.   <servlet-class>  
  4.       org.apache.axis.transport.http.AxisServlet  
  5.   </servlet-class>  
  6. </servlet>  
  7. <servlet>  
  8.   <servlet-name>AdminServlet</servlet-name>  
  9.   <servlet-class>  
  10.       org.apache.axis.transport.http.AdminServlet  
  11.   </servlet-class>  
  12.   <load-on-startup>100</load-on-startup>  
  13. </servlet>  
  14. <servlet>  
  15.   <servlet-name>SOAPMonitorService</servlet-name>  
  16.   <servlet-class>  
  17.       org.apache.axis.monitor.SOAPMonitorService  
  18.   </servlet-class>  
  19.   <init-param>  
  20.     <param-name>SOAPMonitorPort</param-name>  
  21.     <param-value>5001</param-value>  
  22.   </init-param>  
  23.   <load-on-startup>100</load-on-startup>  
  24. </servlet>  
  25. <servlet-mapping>  
  26.   <servlet-name>AxisServlet</servlet-name>  
  27.   <url-pattern>/servlet/AxisServlet</url-pattern>  
  28. </servlet-mapping>  
  29. <servlet-mapping>  
  30.   <servlet-name>AxisServlet</servlet-name>  
  31.   <url-pattern>*.jws</url-pattern>  
  32. </servlet-mapping>  
  33. <servlet-mapping>  
  34.   <servlet-name>AxisServlet</servlet-name>  
  35.   <url-pattern>/services/*</url-pattern>  
  36. </servlet-mapping>  
  37. <servlet-mapping>  
  38.   <servlet-name>SOAPMonitorService</servlet-name>  
  39.   <url-pattern>/SOAPMonitor</url-pattern>  
  40. </servlet-mapping>  

3.创建一个webservice类,就是一个普通的类包含一个普通方法


[java] view plain copy
  1. public class SayHello {  
  2.   
  3.     public String hello(String name){  
  4.         return "Hello "+name;  
  5.     }  
  6.       
  7.     public void in(String name){  
  8.         System.out.println(name + "come");  
  9.         Log4j.getLogger().info(name + "come");  
  10.     }  
  11. }  

4.配置server-config.wsdd,server-config.wsdd的路径在WEB-INF下面,参考第一张图。
[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <deployment name="defaultClientConfig"  
  3.             xmlns="http://xml.apache.org/axis/wsdd/"  
  4.             xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"  
  5.             xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler">  
  6.   
  7.  <globalConfiguration>  
  8.    <parameter name="disablePrettyXML" value="true"/>  
  9.    <parameter name="dotNetSoapEncFix" value="true"/>  
  10.    <parameter name="enableNamespacePrefixOptimization" value="false"/>  
  11.    <requestFlow>  
  12.      <handler type="java:org.apache.axis.handlers.JWSHandler">  
  13.         <parameter name="scope" value="session"/>  
  14.      </handler>  
  15.      <handler type="java:org.apache.axis.handlers.JWSHandler">  
  16.         <parameter name="scope" value="request"/>  
  17.         <parameter name="extension" value=".jwr"/>  
  18.      </handler>  
  19.      <!-- uncomment this if you want the SOAP monitor -->  
  20.      <!-- 
  21.      <handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/> 
  22.      -->  
  23.    </requestFlow>  
  24.    <!-- uncomment this if you want the SOAP monitor -->  
  25.    <!--  
  26.    <responseFlow>  
  27.      <handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/>  
  28.    </responseFlow>  
  29.    -->  
  30.  </globalConfiguration>  
  31.   
  32.  <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>  
  33.  <handler type="java:org.apache.axis.transport.local.LocalResponder" name="LocalResponder"/>  
  34.  <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" name="Authenticate"/>  
  35.   
  36.  <service name="AdminService" provider="java:MSG">  
  37.   <namespace>http://xml.apache.org/axis/wsdd/</namespace>  
  38.   <parameter name="allowedMethods" value="AdminService"/>  
  39.   <parameter name="enableRemoteAdmin" value="false"/>  
  40.   <parameter name="className" value="org.apache.axis.utils.Admin"/>  
  41.  </service>  
  42.   
  43.  <service name="Version" provider="java:RPC">  
  44.   <parameter name="allowedMethods" value="getVersion"/>  
  45.   <parameter name="className" value="org.apache.axis.Version"/>  
  46.  </service>  
  47.    
  48.  <!--  ======================以上内容一般不需要修改===========================-->  
  49.    
  50.    
  51.  <!--  ======================================================================  
  52.   Services:Demo,此段包含Sevice配置实例  
  53.  =======================-->  
  54.   <!--   
  55.     <span style="color:#ff0000;">示例1:   简单 Service</span>  
  56.     情境: 包含下例代码中基本属性.所有参数传递均为元数据,即int、float、double、String、boolean等非对象数据;  
  57.             可以访问此Service中所有的方法  
  58.     引用: 在C#中借助于IDE引用。  
  59.   -->  
  60.   <service name="WSTest1" provider="java:RPC">    <!-- name: 此WebService的名称;provider:工作模式 -->>  
  61.       <parameter name="className" value="<span style="color:#ff0000;">org.tp.SayHello</span>"/><!-- 此Service对应的实现类 -->  
  62.       <parameter name="allowedMethods" value="*"/><!-- 可以访问这个Service中所有的方法 -->  
  63.   </service>  
  64.    
  65.  <!--  ======================以下内容一般不需要修改===========================-->  
  66.  <transport name="http">  
  67.   <parameter name="qs:list"   
  68.                value="org.apache.axis.transport.http.QSListHandler"/>  
  69.   <parameter name="qs:method"   
  70.                value="org.apache.axis.transport.http.QSMethodHandler"/>  
  71.   <parameter name="qs:wsdl"   
  72.                value="org.apache.axis.transport.http.QSWSDLHandler"/>  
  73.   <requestFlow>  
  74.    <handler type="URLMapper"/>  
  75.    <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler">  
  76.    </handler>  
  77.   </requestFlow>  
  78.  </transport>  
  79.   
  80.  <transport name="local">  
  81.   <responseFlow>  
  82.    <handler type="LocalResponder"/>  
  83.   </responseFlow>  
  84.  </transport>  
  85.   
  86. </deployment>  

配置文件中有的东西不固定,在文件注释中描述得很清楚。针对第二步中的类,我们只看配置中的示例1,其中红色标记部分是实现类的路径,注意校正就OK。


5.这样一个最基本的webservice就布好了,运行服务器(本例中是tomcat 6)。在地址栏中输入

http://127.0.0.1:8080/appName/services

注意校正URL,services是固定的。

运行后会列出本应用服务器上发布的webservice

利用Apache AXIS 1 发布WebService_第2张图片

点我们刚才那个 WSTest1,会出现

利用Apache AXIS 1 发布WebService_第3张图片


当别人引用webservice时,一般是用http://localhost:8080/DemoLanZhou/services/WSTest1?wsdl这个地址来引用的


6.开着服务器,等着别人来引用。

也可以在浏览器测试一下http://localhost:8080/DemoLanZhou/services/WSTest1?method=hello&args=tp

注意校正地址,参数中method=hello表示调用hello方法,args=tp是传给hello方法的参数。hello方法就是SayHello.hello();最上面定义的那个类。

利用Apache AXIS 1 发布WebService_第4张图片

上图中选中部分为方法返回的值。


至此完成一个基本的webservice。


欢迎交流!

你可能感兴趣的:(java,apache,webservice,servlet,String,service)