`
cppmule
  • 浏览: 447208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

应用Apache Axis2 实现Webservice发布

    博客分类:
  • Web
 
阅读更多

应用Apache Axis2 实现Webservice发布



由于最近需要做webservice接口,所以google了一下,发现Apacle有个Axis2插件,一直觉得Apache的插件还是蛮好用的,于是决定应用Axis2来实现Webservice,第一次做webservice,呵呵有很多不懂的地方,所以记录下来留着以后备用。

首先访问Apache官网http://axis.apache.org/axis2/java/core/download.cgi下载Axis2最新的1.6.2的两个文件,axis2-1.6.2-bin和axis2-1.6.2-war,我这里用到了axis2的eclipse插件,所以同时下载了 axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip两个eclipse插件。

下载完这几个文件之后,需要将axis2的war文件复制到tomcat的wabapps目录下,重启Tomcat服务,浏览器输入axis2服务地址http://localhost:8082/axis2/,如果axis2服务没有问题,页面会显示如下效果,说明服务启动成功。

接下来在Eclipse中安装axis2插件,将下载的axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip文件解压,解压出来就是2个jar包,

将这两文件复制到Ecilpse的 plugins文件夹下,重启Eclipse,配置axis2的运行环境,如图,图中的路径F:\axis2-1.6.2就是下载的axis2-1.6.2-bin的解压目录。



点击file->new others->,如果插件安装成功,在窗口的列表中会显示如下的axis2的两个选项,



做好以上准备工作之后,接下来就要开始创建Webservice了。首先创建一个java工程,并创建一个Java类,很简单的一个类,只包含一个公共方法,如下

 

  1. package com.jax.test;  
  2.   
  3. import com.jax.db.DataBase;  
  4.   
  5. public class TestService {  
  6.   
  7.     public String getData(String id,String name){  
  8.         return DataBase.getData(id,name);         
  9.     }  
  10.       
  11. }  

在服务类TestService中,有一个getData方法,最后发布服务之后,该方法就是暴露给外界访问webservice接口的方法。包含2个String参数和一个返回值,在方法中,

通过DataBase类的getData方法访问了Oracle数据库并返回数据。

 

编写完服务类之后,通过axis2的插件将服务打包成aar文件,复制到tomcat的webapps的axis2目录下的WEB-INF下的services文件夹下,打包过程如下

点击file->new others-> 在窗口中选择Axis2 Service Archiver选项,然后下一步如图,该步骤是选择class类的根目录,在bin目录下,包含了2个Class类文件,

com.jax.test.TestService和com.jax.db.DataBase,因为在TestService服务类中,关联了DataBase类,所以要选择根目录。



点击next ->如图所示 勾选Skip WSDL


 

点击next->选择服务所需的jar包,在这里因为连接了oracle数据库,所以选择了orache的驱动包

 

点击next-> 如图,勾选 图中的选项。


点击next-> 如图,输入服务名和服务类的全路径名,选择Search declare methods only,会显示要发布的服务方法。

输入打包aar文件的名称和输出路径,最后打包完成。





最后将打包好的aar文件复制到tomcat 的axis2的WEB-INF的services目录下,重启Tomcat服务,如图,发布的MyService服务



这样一个简单的webservice服务就发布完成了,有一点需要注意的是,和这个服务类相关的类需要打成jar包拷贝到axis服务的WEB-INF的lib目录下。




用Axis2创建调用webservice的客户端,创建java工程,引入以下axis2相关的jar包

 

axiom-api-1.2.11.jar
axiom-impl-1.2.11.jar
axis2-adb-1.5.5.jar
axis2-kernel-1.5.5.jar
axis2-transport-http-1.5.5.jar
axis2-transport-local-1.5.5.jar

commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-io.jar
commons-logging-1.1.1.jar
httpcore-4.0.jar
mail-1.4.jar
neethi-2.0.5.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.3.jar


创建调用服务类,应用axis2提供的类实现调用服务,代码如下:

  1. package com.test;  
  2.   
  3. import java.util.Iterator;   
  4. import javax.xml.namespace.QName;   
  5. import org.apache.axiom.om.OMAttribute;   
  6. import org.apache.axiom.om.OMElement;   
  7. import org.apache.axis2.AxisFault;   
  8. import org.apache.axis2.addressing.EndpointReference;   
  9. import org.apache.axis2.client.Options;   
  10. import org.apache.axis2.rpc.client.RPCServiceClient;   
  11.   
  12. public class CallWebservice {   
  13.   
  14. public String getData(String id,String name) {   
  15.     String result=null;   
  16.           
  17.     //webService的调用地址     
  18.     String srvcUrl = "http://localhost:8082/axis2/services/MyService";   
  19.     //操作的命名空间+“:”+操作名   
  20.     QName qname = new QName("http://test.jax.com""getData");   
  21.     //传递的参数对象集  
  22.     Object param[] = new Object[] { id,name };   
  23.     try {   
  24.         //实例化远程服务调用客户端对象   
  25.         RPCServiceClient client = new RPCServiceClient();   
  26.         //实例化Options对象  
  27.         Options options = new Options();   
  28.         //设置Options对象的连接终端地址  
  29.         options.setTo(new EndpointReference(srvcUrl));   
  30.         //设置Options对象的操作事件对象   
  31.         options.setAction("urn:getData");   
  32.         //为远程服务调用客户端对象设置Options子对象   
  33.         client.setOptions(options);   
  34.         //传递参数,调用服务  
  35.          OMElement element = client.invokeBlocking(qname, param);   
  36.           
  37.         result=element.getFirstElement() .getText();   
  38.       
  39.     }   
  40.     catch (AxisFault e) {   
  41.         e.printStackTrace();   
  42.     }   
  43.     return result;   
  44. }   
  45.   
  46. //测试   
  47. public static void main(String[] args) {   
  48.   
  49.     CallWebservice client=new CallWebservice();   
  50.       
  51.     String rs = client.getData("1","张三");   
  52.      System.out.println(rs);   
  53. }   
  54. }   


代码说明请看注释。

 


还有一种调用方式是通过axis2工具生成stub类,然后调用webservice,


打开cmd命令窗口,进入axis2的bin目录,输入命令:wsdl2java -urihttp://localhost:8082/axis2/services/MyService?wsdl -p client -s -o stub

如图


 其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,读者就会发现在当前目录下多了个stub目录,在."stub"src"client目录可以找到一个MyServiceStub.java文件,该文件复杂调用WebService,然后可以在程序中直接使用这个类,通过stub调用webservice 代码如下:

 

  1. package client;  
  2.   
  3. import java.rmi.RemoteException;  
  4.   
  5. import org.apache.axis2.AxisFault;  
  6.   
  7. import client.MyServiceStub.GetDataResponse;  
  8.   
  9. public class CallService {  
  10.   
  11.     public static void main(String[] args){  
  12.         //MyServiceStub中生成了一个getData(GetData getData)的方法  
  13.         //该方法的内部实现了调用发布的webservice服务中的getData()方法  
  14.           
  15.         //首先创建参数对象  
  16.         MyServiceStub.GetData getData = new MyServiceStub.GetData();  
  17.         //给参数赋值  
  18.         getData.setId("1");  
  19.         getData.setName("张三");  
  20.           
  21.         try {  
  22.             //实例化stub类  
  23.             MyServiceStub stub = new MyServiceStub();  
  24.             try {  
  25.                 //调用服务方法  
  26.                 GetDataResponse rs = stub.getData(getData);  
  27.                 //返回值为String   
  28.                 String str = rs.get_return();  
  29.                 System.out.println(str);  
  30.             } catch (RemoteException e) {  
  31.                 // TODO Auto-generated catch block  
  32.                 e.printStackTrace();  
  33.             }  
  34.         } catch (AxisFault e) {  
  35.             // TODO Auto-generated catch block  
  36.             e.printStackTrace();  
  37.         }  
  38.     }  
  39. }  
分享到:
评论

相关推荐

    axis2实现webservice

    ### Axis2实现WebService知识...通过以上步骤,可以实现一个完整的基于Axis2的WebService应用,包括服务端的发布和客户端的调用。这为开发者提供了一个清晰的指南,帮助他们更好地理解和使用Axis2进行WebService开发。

    Spring集成axis2实现webservice所用到的包

    总结来说,Spring集成Axis2实现Web服务涉及到Spring的IoC容器、服务的创建和发布、以及客户端的调用等多个环节。了解并掌握这些知识点,对于开发高质量的Web服务应用至关重要。在实际项目中,务必确保所有必要的库...

    axis2发布webservice和调用axis2服务接口

    总结起来,使用Axis2发布Web服务和生成客户端代码调用服务是一个标准化的过程,涉及到服务的编写、打包、部署以及客户端的代码生成和调用。了解并熟练掌握这一过程,对进行Java Web服务开发至关重要。在实际开发中,...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    利用Axis2实现WebService开发与部署

    【标题】:“利用Axis2实现WebService开发与部署” 【描述】:“利用Axis2实现WebService开发与部署-3中方法进行开发” 【标签】:“WebService” 本文将详细讲解如何使用Apache Axis2框架来开发和部署Web ...

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    axis2webservice接口例子

    描述中的“一个基于axis的webservice接口例子”进一步明确了这是一个基于Apache Axis2的Web服务接口实现。Axis2是Apache SOAP(Simple Object Access Protocol)项目的继任者,它不仅支持SOAP,还支持RESTful风格的...

    AXIS2实现WebService的jar包

    客户端可以通过多种方式调用AXIS2发布的Web服务: - 使用AXIS2的客户端API,如Stub类,直接编程调用。 - 通过SOAP消息直接发送请求,可以使用各种HTTP客户端库,如Apache HttpClient。 - 利用AXIS2生成的客户端...

    axis2实现webservice请求

    在 Axis2 中实现 WebService 请求涉及以下步骤: 1. **环境设置**:首先,你需要在你的项目中引入 Axis2 相关的 jar 包。这些 jar 包通常包括 Axis2 的核心库、XML 解析器、依赖的 Servlet API 等。在提供的资源包...

    axis2发布webservice

    Axis2 发布 WebService Axis2 是一个基于 Java 的开源 Web 服务框架,由 Apache 软件基金会开发和维护。Axis2 提供了一个灵活的框架来开发、部署和管理 Web 服务,支持多种协议和数据格式,包括 SOAP、REST、JSON ...

    Eclipse + Axis2发布WebService

    【Eclipse + Axis2 发布 WebService】是一个关于在Eclipse集成开发环境中使用Apache Axis2框架创建并发布Web服务的教程。Apache Axis2是用于构建Web服务和Web服务客户端的高性能、灵活且可扩展的开源框架。以下是...

    axis2开发webservice

    总之,"Axis2 开发 WebService" 主要涉及使用 Apache Axis2 框架和 Eclipse IDE 创建、测试和部署基于 SOAP 的 WebServices,通过这一过程,开发者可以实现不同系统间的互操作性,推动企业级应用集成和数据共享。

    Java-tomcat-axis2开发webservice返回json数据

    标题“Java-tomcat-axis2开发webservice返回json数据”涉及的是使用Java、Tomcat服务器以及Axis2框架来创建Web服务,并返回JSON格式的数据。这是一个常见的技术组合,用于构建RESTful API或者提供服务化接口。下面...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    2. Tomcat服务器:这是Apache软件基金会的开源Servlet容器,用于部署和运行Java Web应用程序,包括基于AXIS2的WebService。 3. AXIS2:Apache AXIS2是Java平台上用于构建和使用Web服务的一个高性能、轻量级的框架。 ...

    Axis2搭建WebService服务端demo

    在本文中,我们将深入探讨如何使用Spring、Axis2和Maven构建一个基于Java的Web服务(WebService)服务端示例。这些技术的结合为开发人员提供了高效、灵活且可扩展的解决方案来创建和消费Web服务。 首先,让我们了解...

    AXIS2实现webservice代码

    AXIS2是Apache软件基金会开发的一个开放源代码的Web服务框架,主要用于构建和部署Web服务。它是基于SOAP(简单对象访问协议)和WSDL(Web服务描述语言)的,提供了高性能、灵活且可扩展的环境来创建和消费Web服务。...

    基于axis2的webservice

    Axis2通过这些标准实现了Web服务的发布、调用和管理。 3. **Axis2的优势** - **模块化架构**:Axis2采用模块化设计,使得服务可以根据需要动态加载或卸载模块,提高了灵活性和可扩展性。 - **高性能**:Axis2优化...

    axis2客户端调用webService接口,精简jar包

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而Axis2是Apache软件基金会开发的一个Web服务框架,专门用于创建和消费Web服务。本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注...

Global site tag (gtag.js) - Google Analytics