`

Axis2 WebService的发布和调用说明

    博客分类:
  • ws
 
阅读更多

准备工作

1、下载:axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址:http://axis.apache.org/axis2/java/core/
2、环境变量设置
AXIS2_HOME E:\research\axis2-1.5.4-bin\axis2-1.5.4
JAVA_HOME C:\Program Files\Java\jdk1.6.0_21
3
axis2-1.5.4-war.zip解压,将压缩包内的axis2.war部署到%TOMCAT-HOME%/webapps下,启动tomcat,访问http://localhost:8085/axis2/看是否正常。

ServiceService列表面,当前只有一个Versionhttp://localhost:8085/axis2/services/Version?wsdl
4
、下EclipseAxis2插件: axis2-eclipse-codegen-plugin-1.5.4.zip,axis2-eclipse-service-plugin-1.5.4.zip 后将plugins 复制到%ECLIPSE_HOME%\plugins
http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-codegen-plugin-1.5.4.zip
http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-service-plugin-1.5.4.zip

安装完插件后,IDE选择new->other中看到“Axis2 Wizards”,说明插件已经安装成功了。

 

AXIS2Web Services 
一、工程文件

1、新建名称为Axis2Service1 java工程。
2
、新建 \Axis2Service1\src\ws\TestWs.java

[java] view plaincopy
  1. package ws;  
  2. public class TestWs {  
  3.  public String showName(String name) {return name; }  
  4.  public String getName() {return "Axis2Service Sample"; }    
  5. }  


 

二、arr部署方式
1
、手打包
新建\Axis2Service1\deploy文件,将\Axis2Service1\bin下的class文件复制来。
新建\Axis2Service1\deploy\META-INF\services.xml文件

[html] view plaincopy
  1. <service name="AxisService">  
  2.  <description>AxisService</description>  
  3.  <parameter name="ServiceClass">ws.TestWs</parameter>  
  4.  <operation name="showName">  
  5.   <messageReceiver  
  6.    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
  7.  </operation>  
  8.  <operation name="getName">  
  9.   <messageReceiver  
  10.    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
  11.  </operation>  
  12. </service>  


 

生成aar \Axis2Service1\deploy>jar cvf AxisService.aar . (注意.)

2、插件打包
IDE
选择New->other->Axis2 Service Archiver,Next;
Class File Location:
选择Axis2Service1\bin,Next;
Skip WSDL,Next;
Service Archiver 
选择jar位置,如果没有jar包就直接点Next;
Generate the service xml automatically 生成service.xml file文件,Next
service name,
:AxisService,然后在class name 中填写要布的(全路径,如:ws.TestWs),load。勾Search declared methods only。点next

output File location,:D:\ ; output File Name,artiver文件的名称 AxisService。点finish
提示 Service Archvie generated successfully! 注册表明,生成成功。


3
AxisService
AxisService.aar
复制到%TOMCAT-HOME%/webapps/axis2/WEB-INF/services下。(不打aar包,\Axis2Service1\deploy下面复制去也是可以)

打开http://localhost:8085/axis2/services/listServices 就可以看到刚才发布的AxisService服务了,下面有两个函数:showName,getName

 

三、独立部署

1、新建java web project工程。
2
、文件复制
%TOMCAT-HOME%\webapps\axis2\WEB-INF\lib 
复制到 \Axis2Service2\WebRoot\WEB-INF\lib 下,并加入工程引用。
%TOMCAT-HOME%\webapps\axis2\WEB-INF\conf 
复制到 \Axis2Service2\WebRoot\WEB-INF\conf 
%TOMCAT-HOME%\webapps\axis2\WEB-INF\modules 
复制到 \Axis2Service2\WebRoot\WEB-INF\modules


3
web.xml 如下

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app id="wmf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  5.  <servlet>  
  6.   <servlet-name>AxisServlet</servlet-name>  
  7.   <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
  8.   <load-on-startup>1</load-on-startup>  
  9.  </servlet>  
  10.  <servlet-mapping>  
  11.   <servlet-name>AxisServlet</servlet-name>  
  12.   <url-pattern>/services/*</url-pattern>  
  13.  </servlet-mapping>  
  14. </web-app>  


 

2、新建 \Axis2Service2\src\ws\TestWs.java

[java] view plaincopy
  1. package ws;  
  2. public class TestWs {  
  3.  public String showName(String name) {return name; }  
  4.  public String getName() {return "Axis2Service Sample"; }    
  5. }  


3、新建\Axis2Service2\WebRoot\WEB-INF\services
4
、新建一个AxisService
AxisService\META-INF\services.xml

[html] view plaincopy
  1. <service name="AxisService">  
  2.  <description>AxisService</description>  
  3.  <parameter name="ServiceClass">ws.TestWs</parameter>  
  4.  <operation name="showName">  
  5.   <messageReceiver  
  6.    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
  7.  </operation>  
  8.  <operation name="getName">  
  9.   <messageReceiver  
  10.    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
  11.  </operation>  
  12. </service>  


 

tomcat后,访问http://localhost:8085/Axis2Service2/services/AxisService?wsdl看是否正常。

 AXIS2Web Services

一、客stub文件生成
1
、脚本生成方式
AXIS2的解bin(%AXIS2_HOME%\bin\)行下面
wsdl2java -uri http://localhost:8085/Axis2Service2/services/AxisService?wsdl -p ws -s -o stub
-p
参数指定了生成的Java的包名
-o
参数指定了生成的一系列文件保存的根目
stub\src\ws生成AxisServiceStub.java

2、插件生成方式
IDE
选择New->other->Axis2 Code Generator,Next;
Generate Java source code from a WSDL file,Next;
WSDL file location,
:http://localhost:8085/Axis2Service2/services/AxisService?wsdl,Next;
如果路径不会提示:Specified WSDL is invalid!, Please select a validated *.wsdl/*.xml file on previous page.
正确的,点next;

指定入路径,Next

提示:All operations completed successfully! 生成成功。在D:\src\ws 生成了stub一系列文件,其中ws是包名。

上面2种方式生成的stub有点不一,脚本生成方式是文件,插件生成方式生成的一系列文件。

二、客
脚本生成方式例子,插件生成的似。

1、新建 java工程 Axis2Client
新建\Axis2Client\lib文件
%AXIS2_HOME%\lib\ 下的所有jar包复制到\Axis2Client\lib,并加入工程引用中
将通脚本生成的AxisServiceStub.java文件加入到src\ws


2
、新建test.TestWs.java 主要代如下

 

[java] view plaincopy
  1. //初始化Sub类  
  2. AxisServiceStub stub = new AxisServiceStub();  
  3. //传递AxisServiceStub.ShowName对象,相关参数在这边赋值。  
  4. AxisServiceStub.ShowName command = new AxisServiceStub.ShowName();  
  5. command.setName("Hello!");  
  6. //取得返回值  
  7. String name = stub.showName(command).get_return();  
  8. System.out.println(name);  


 

 

用成功后控制台出:Hello!

 

 AXIS2REST Web Services

使用http://localhost:8086/Axis2Rest/services/AxisService/showName?name=rest的方式访问刚才发布成功的WebService从上面可以看出个就是restAxis1.0是无法通showName?name=rest取信息的。

2、使用axis

[java] view plaincopy
  1. public class TestRest {  
  2.    
  3.     private static String toEpr = "http://localhost:8086/Axis2Rest/services/AxisService";  
  4.      
  5.     public static void main(String[] args) throws AxisFault {  
  6.         Options options = new Options();  
  7.         options.setTo(new EndpointReference(toEpr));  
  8.          
  9.         //客户端REST方式调用服务跟普通服务的区别,REST调用必须加上下面这个代码。  
  10.         options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);  
  11.         ServiceClient sender = new ServiceClient();  
  12.         //axis2-1.5.4不需要下面这句代码,否则会报错  
  13.         //sender.engageModule(new QName(Constants.MODULE_ADDRESSING));  
  14.         sender.setOptions(options);  
  15.         OMElement result = sender.sendReceive(getPayload());  
  16.         try {  
  17.             XMLStreamWriter writer = XMLOutputFactory.newInstance()  
  18.                     .createXMLStreamWriter(System.out);  
  19.             result.serialize(writer);  
  20.             writer.flush();  
  21.         } catch (XMLStreamException e) {  
  22.             e.printStackTrace();  
  23.         } catch (FactoryConfigurationError e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.     }  
  27.     private static OMElement getPayload() {  
  28.         OMFactory fac = OMAbstractFactory.getOMFactory();  
  29.         OMNamespace omNs = fac.createOMNamespace(  
  30.                 "http://ws""example1");  
  31.         OMElement method = fac.createOMElement("showName", omNs);  
  32.         OMElement value = fac.createOMElement("name", omNs);  
  33.         value.addChild(fac.createOMText(value, "Rest"));  
  34.         method.addChild(value);  
  35.         return method;  
  36.     }  


 

明:
1
sender.engageModule(new QName(Constants.MODULE_ADDRESSING)); axis2-1.5.4不需要下面句代,否报错

2、客REST方式用服跟普通服的区,就是Rest有下面个代
options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
两者返回的数据都是

[html] view plaincopy
  1. <ns:showNameResponse xmlns:ns="Resthttp://ws"><ns:return>Rest</ns:return></ns:showNameResponse>  


 

3getPayload方法

OMNamespace omNs = fac.createOMNamespace("http://ws", "example1"); 指定命名空,如果没如下错误<faultstring>namespace mismatch require http://ws found http://ws1</faultstring>

OMElement method = fac.createOMElement("showName", omNs); 传递的方法名 "showName"

OMElement value = fac.createOMElement("name", omNs); 传递的参数name

value.addChild(fac.createOMText(value, "Rest"));  传递参数name值为Rest

分享到:
评论

相关推荐

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

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

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

    **步骤5:发布和测试WebService** 1. 启动Tomcat服务器,服务会自动部署并可供访问。 2. 使用AXIS2提供的WSDL URL(通常是http://localhost:8080/axis2/services/HelloWorldService?wsdl)来查看服务定义。 3. 创建...

    axis2发布webservice和调用实例

    总的来说,掌握Axis2发布和调用Web服务的基本流程,对理解和实施SOA(面向服务架构)至关重要。通过实践上述步骤,开发者能够有效地创建和使用Web服务,实现不同系统间的互操作。同时,提供的文档和示例代码是学习...

    axis2webservice接口例子

    关于标签,“axis2”和“webservice”,这两个标签分别对应了Web服务开发的两个关键元素。Apache Axis2是Web服务的实现框架,而Web服务本身则是一种允许不同系统之间交换数据的标准协议。在Java开发中,Axis2常被...

    Axis2发布和调用webservice

    描述了axis2如何发布webservice,如果是用MyEclipse来发布,需要安装插件,把你发布后的.aar文件放 入/web/WEB-INF/services/目录中就能被访问和调用,有点繁琐,但axis2功能十分强大,方法的返回类型不仅可 以用...

    Android axis调用Webservice

    总结,Android利用Axis2调用Web Service涉及服务端接口设计、客户端代码实现、网络请求和数据解析等多个环节。了解这些知识点有助于构建稳定可靠的跨平台通信。在实际开发中,还需要考虑错误处理、性能优化以及安全...

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

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

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    Axis2WebService 源码

    Axis2 WebService是一个开源的、基于Java的Web服务框架,由Apache软件基金会开发。它提供了构建和部署Web服务以及处理SOAP消息的强大工具。这个源码包可能是为了帮助开发者深入理解Axis2的工作原理,或者用于自定义...

    axis2调用WebService详细说明

    在本文档中,我们将详细介绍如何使用Axis2来发布和调用WebService服务。 对于Axis2程序包的下载,可以访问其官方网站:[http://ws.apache.org/axis2/](http://ws.apache.org/axis2/) 进行下载。需要注意的是,由于...

    axis2 webservice 客户的调用所需要的jar

    axis2-java2wsdl-1.6.2.jar axis2-kernel-1.6.2.jar axis2-transport-http-1.6.2.jar axis2-transport-local-1.6.2.jar commons-codec-1.3.jar commons-httpclient-3.1.jar commons-logging-1.1.1.jar ...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    Axis2教程和java调用webservice的各种方法总结

    标题“Axis2教程和java调用webservice的各种方法总结”表明了本文档主要聚焦于两个核心内容:一是Axis2框架的使用教程,二是Java语言调用Web服务的不同方法的综合概述。 描述中的“Axis2教程”暗示了会详细讲解Axis...

    axis调用webservice接口所需jar包.rar

    axis调用第三方webservice接口所需的jar包,包括axis-1.4.jar,axis-jaxrpc-1.3.jar,axis-jaxrpc-1.4.jar,commons-discovery-0.5.jar,commons-logging-1.2.jar,cxf-rt-databinding-jaxb-3.3.1.jar,javax.mail-...

    webservice发布及调用

    Axis2 提供了两种发布 WebService 的方式:打包发布和不打包发布。本文主要介绍不打包发布的方式,这种方式类似于 XFire,适用于遇到兼容性问题的情况。 **步骤详解:** 1. **添加 JAR 包:** - 从 Axis2 的 WAR ...

    axis 发布webservice的步骤

    标题中的“axis发布webservice的步骤”涉及到的是在Java环境中使用Apache Axis库创建并部署Web服务的过程。Apache Axis是开源的Web服务工具包,它允许开发者通过简单的API将Java类暴露为Web服务,或者调用远程Web...

    axis2 webService 详细教程

    5. ** 调用服务**:学习如何使用 Axis2 的客户端API来调用已发布的Web服务,包括同步和异步调用,以及处理返回结果。 6. ** 错误处理和调试**:理解如何处理可能出现的错误,以及如何利用Axis2的调试功能进行问题...

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

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    使用axis调用WebService服务端

    压缩包中包含详细代码以及所用到的jar,是完整可运行的project。当然,需要正确的路径支持才可以运行,本人没有把我所用到的路径贴出,改为本机地址。

Global site tag (gtag.js) - Google Analytics