zoukankan      html  css  js  c++  java
  • 6. 使用Axis开发WebService程序

    转自:http://www.itkeyword.com/doc/7529577946427268306/Apache-Servlet-WebSOAPWebService

    所谓Web Service就是客户端以标准的SOAP消息将服务请求发给服务提供者,不论服务提供者用什么样的技术,Java、EJB、或者.NET执行相应的程序得到结果,然后将结果以SOAP消息返回给服务请求者。以axis为例,创建一个简单的Web Service

    首先到http://ws.apache.org/axis/上去下载最新的axis版本。最新版本是axis-src-1_4.zip

    NEWS (April 22, 2006): Axis 1.4 Final is now available!

    第一步:创建WebService项目,命名为Webservice_Begin

    解压axis-src-1_4.zip后,拷贝lib目录下最基本的jar包至项目WEB-INF/lib目录下,如下列表:

    axis.jar

    commons-discovery-0.2.jar

    commons-logging-1.1.jar

    jaxrpc.jar

    mailapi_1_3_1.jar

    wsdl4j-1.5.1.jar

    junit-4.9-SNAPSHOT-20100512-0041.jar

    第二步:创建WebService服务器端接口和实现类

    Java代码  收藏代码
    1. package com.unis.p2p.server;  
    2. /** 
    3.  * WebService服务器端业务逻辑接口 
    4.  *  
    5.  * @author Posey 2010-12-17 
    6.  */  
    7. public interface Hello {  
    8.       
    9.     /** 
    10.      * 接口方法:接收客户端WebService请求 
    11.      *  
    12.      * @author Posey 2010-12-17 
    13.      * @param message 
    14.      * @return 
    15.      */  
    16.     public String executeTaskList(String message);  
    17.   
    18. }  
    Java代码  收藏代码
    1. package com.unis.p2p.server;  
    2.   
    3. /** 
    4.  * WebService服务器端业务逻辑实现类 
    5.  * @author Posey 2010-12-17 
    6.  * 
    7.  */  
    8. public class HelloImpl implements Hello {  
    9.   
    10.     /** 
    11.      * 接收客户端WebService请求,具体执行相关操作 
    12.      *  
    13.      * @author Posey 2010-12-17 
    14.      */  
    15.     public String executeTaskList(String message) {  
    16.         return "OK|调用成功! " + message;  
    17.     }  
    18.   
    19. }  

    第三步:修改WEB-INF/web.xml配置文件

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    6.   
    7.     <!-- ********************************************** -->  
    8.       
    9.     <!-- WebService核心处理类 -->  
    10.     <servlet>  
    11.         <servlet-name>AxisServlet</servlet-name>  
    12.         <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
    13.     </servlet>  
    14.   
    15.     <servlet-mapping>  
    16.         <servlet-name>AxisServlet</servlet-name>  
    17.         <url-pattern>/services/*</url-pattern>  
    18.     </servlet-mapping>  
    19.       
    20.     <!-- ********************************************** -->  
    21.   
    22.     <welcome-file-list>  
    23.         <welcome-file>index.jsp</welcome-file>  
    24.     </welcome-file-list>  
    25.       
    26. </web-app>  

    第四步:创建WebRoot/WEB-INF/server-config.wsdd文件,定义服务的名称,具体的实现类,以及发布的方法和属性等等

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
    3.   
    4.     <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper" />  
    5.   
    6.     <service name="executeTask" provider="java:RPC">  
    7.         <parameter name="className" value="com.unis.p2p.server.HelloImpl" />  
    8.         <parameter name="allowedMethods" value="executeTaskList" />  
    9.     </service>  
    10.   
    11.     <transport name="http">  
    12.         <requestFlow>  
    13.             <handler type="URLMapper" />  
    14.         </requestFlow>  
    15.     </transport>  
    16.       
    17. </deployment>  

    第五步:启动应用服务器,发布Web Service服务。

    地址栏输入:http://127.0.0.1:8080/Webservice_Begin/services回车,如果没有错误提示,则恭喜你,你的Web Service已经发布成功。

    点击wsdl,还可以看到具体的wsdl的配置信息如下:

    Xml代码  收藏代码
    1.   <?xml version="1.0" encoding="UTF-8" ?>   
    2. <wsdl:definitions targetNamespace="http://127.0.0.1:8080/Webservice_Begin/services/executeTask" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://127.0.0.1:8080/Webservice_Begin/services/executeTask" xmlns:intf="http://127.0.0.1:8080/Webservice_Begin/services/executeTask" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    3. - <!--   
    4. WSDL created by Apache Axis version: 1.4  
    5. Built on Apr 22, 2006 (06:55:48 PDT)  
    6.   
    7.   -->   
    8. <wsdl:message name="executeTaskListResponse">  
    9.   <wsdl:part name="executeTaskListReturn" type="soapenc:string" />   
    10.   </wsdl:message>  
    11. <wsdl:message name="executeTaskListRequest">  
    12.   <wsdl:part name="message" type="soapenc:string" />   
    13.   </wsdl:message>  
    14. <wsdl:portType name="HelloImpl">  
    15. <wsdl:operation name="executeTaskList" parameterOrder="message">  
    16.   <wsdl:input message="impl:executeTaskListRequest" name="executeTaskListRequest" />   
    17.   <wsdl:output message="impl:executeTaskListResponse" name="executeTaskListResponse" />   
    18.   </wsdl:operation>  
    19.   </wsdl:portType>  
    20. <wsdl:binding name="executeTaskSoapBinding" type="impl:HelloImpl">  
    21.   <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />   
    22. <wsdl:operation name="executeTaskList">  
    23.   <wsdlsoap:operation soapAction="" />   
    24. <wsdl:input name="executeTaskListRequest">  
    25.   <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://server.p2p.unis.com" use="encoded" />   
    26.   </wsdl:input>  
    27. <wsdl:output name="executeTaskListResponse">  
    28.   <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://127.0.0.1:8080/Webservice_Begin/services/executeTask" use="encoded" />   
    29.   </wsdl:output>  
    30.   </wsdl:operation>  
    31.   </wsdl:binding>  
    32. <wsdl:service name="HelloImplService">  
    33. <wsdl:port binding="impl:executeTaskSoapBinding" name="executeTask">  
    34.   <wsdlsoap:address location="http://127.0.0.1:8080/Webservice_Begin/services/executeTask" />   
    35.   </wsdl:port>  
    36.   </wsdl:service>  
    37.   </wsdl:definitions>  

    第六步:创建WebService客户端测试类

    /Webservice_Begin/test/com/unis/p2p/client/WebServiceTest.java

    Java代码  收藏代码
    1. package com.unis.p2p.client;  
    2.   
    3. import java.net.URL;     
    4.   
    5. import org.apache.axis.client.Call;     
    6. import org.apache.axis.client.Service;     
    7. import org.junit.Test;  
    8.   
    9. /** 
    10.  * 类说明:Client端测试类,发出请求 
    11.  * @author Posey 2010-12-17 
    12.  * 
    13.  */  
    14. public class WebServiceTest {  
    15.       
    16.     @Test  
    17.     public void testExecuteTask() throws Exception {  
    18.         String res = "";  
    19.           
    20.         String ss = "ERR|2352|5683|2235|8428";  
    21.         String[] str = ss.split("\|");  
    22.         String tempMsg = "";  
    23.         for (int i = 1; i < str.length; i++) {  
    24.             tempMsg += str[i] + ",";  
    25.         }  
    26.         tempMsg = tempMsg.substring(0, tempMsg.length()-1);  
    27.           
    28.         //调接口  
    29.         res = this.executeTask("http://127.0.0.1:8080/Webservice_Begin/services/executeTask",   
    30.                                 "executeTaskList",   
    31.                                 new Object[]{ tempMsg });  
    32.           
    33.         System.out.println(res);    //输出结果  
    34.     }  
    35.   
    36.     //核心处理方法  
    37.     private synchronized String executeTask(String url, String method, Object[] args) throws Exception {  
    38.           
    39.         // 创建Service实例  
    40.         Service service = new Service();  
    41.           
    42.         // 通过Service实例创建Call实例  
    43.         Call call = (Call) service.createCall();  
    44.           
    45.         // 将WebService的服务路径加入到Call实例中,并为Call设置服务的位置  
    46.         URL webServiceUrl = new URL(url);  
    47.         call.setTargetEndpointAddress(webServiceUrl);  
    48.           
    49.         // 调用WebService方法  
    50.         call.setOperationName(method);  
    51.           
    52.         // 调用WebService传入参数  
    53.         String result = (String) call.invoke(args);  
    54.           
    55.         return result;  
    56.     }  
    57.       
    58. }  

      

    第七步:Run As - JUnit Test,执行成功

  • 相关阅读:
    kafka 幂等生产者及事务(kafka0.11之后版本新特性)
    git 忽略 .idea文件
    Java Scala 混合编程导致 编译失败 ,【找不到符号】问题解决
    Starting sshd: /var/empty/sshd must be owned by root and not group or world-writable.
    Spark RDD持久化、广播变量和累加器
    PSQLException: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "ambari", database "ambari", SSL off
    PostgreSQL:Java使用CopyManager实现客户端文件COPY导入
    ThreadLocal的使用及原理分析
    gradlew和gradle的区别
    Managing Large State in Apache Flink®: An Intro to Incremental Checkpointing
  • 原文地址:https://www.cnblogs.com/sharpest/p/7852171.html
Copyright © 2011-2022 走看看