1、新建web项目,结构如下
Axis2
| src
| WebRoot
| | WEB-INF
| | |lib
| | |web.xml
| | index.jsp
将axis2-1.6.0-war.zip解压至tomcat的webapps目录,启动tomcat后会自动解压axis2.war
项目,将axis2工程下axis2-web拷贝至WebRoot下,同时将axis2中lib目录下的jar包全部
拷贝至项目中lib下,保留如下文件即可,目录结构如下
Axis2
| src
| WebRoot
| | axis2-web
| | | css
| | | images
| | | include
| | | index.jsp
| | | listServices.jsp
| | WEB-INF
| | | lib
| | | web.xml
| | index.jsp
2、在web.xml中添加如下代码
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3、新建HelloService.java类,代码如下:
package com.siven.axis2.service;
public class HelloService
{
public String sayHello()
{
return "hello";
}
public String sayHelloToPerson(String name)
{
if (name == null)
{
name = "nobody";
}
return "hello," + name;
}
}
4、在项目WEB-INF目录下新增如下目录及文件,结构如下
Axis2
| src
| WebRoot
| | axis2-web
| | | css
| | | images
| | | include
| | | index.jsp
| | | listServices.jsp
| | WEB-INF
| | | lib
| | | services
| | | |MyService
| | | | |META-INF
| | | | | | services.xml
| | | web.xml
| | index.jsp
services.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="helloService">
<description>Web Service例子</description>
<parameter name="ServiceClass">com.siven.axis2.service.HelloService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
5、将Axis2项目发布至tomcat中,启动tomcat,在浏览器中输入:
http://localhost:8888/Axis2/services/listServices
如果看到如下界面,则证明Service发布成功
Available services
helloService
Service Description : helloService
Service EPR : http://localhost:8888/Axis2/services/helloService
Service Status : Active
Available Operations
sayHello
sayHelloToPerson
6、以下是客户端调用代码
public static void invokeSayHello() throws AxisFault
{
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/helloService");
options.setTo(targetEPR);
// 指定sayHelloToPerson方法返回值的数据类型的Class对象
@SuppressWarnings("rawtypes")
Class[] classes = new Class[]{String.class};
// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://service.axis2.siven.com", "sayHello");
// 调用sayHelloToPerson方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, new Object[]{}, classes)[0]);
}
public static void invokeSayHelloToPerson() throws AxisFault
{
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/helloService");
options.setTo(targetEPR);
// 指定sayHelloToPerson方法的参数值
Object[] opAddEntryArgs = new Object[]{"siven"};
// 指定sayHelloToPerson方法返回值的数据类型的Class对象
@SuppressWarnings("rawtypes")
Class[] classes = new Class[]{String.class};
// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间
QName opAddEntry = new QName("http://service.axis2.siven.com", "sayHelloToPerson");
// 调用sayHelloToPerson方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
}
7、以下是Stub调用方式:
前提:安装好Axis2,并配置环境变量
AXIS2_HOME:Axis2安装目录
在cmd下运行如下命令:
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8888/Axis2/services/helloService?wsdl -p com.siven.axis2.client -s -o stub
其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。
-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。
在执行完上面的命令后,就会发现在当前目录下多了个stub目录,
在stub/src/client目录可以找到一个HelloServiceStub.java文件,
调用代码:
HelloServiceStub stub = new HelloServiceStub();
HelloServiceStub.SayHelloToPerson gg = new HelloServiceStub.SayHelloToPerson();
gg.setName("siven");
System.out.println(stub.sayHello(new HelloServiceStub.SayHello()).get_return());
System.out.println(stub.sayHelloToPerson(gg).get_return());
分享到:
相关推荐
Axis2 入门及简单例子 Axis2 是一个基于 Java 的 Web 服务框架,它提供了一个灵活、可扩展、可靠的方式来创建、部署和管理 Web 服务。Axis2 是 Apache 软件基金会的一个开源项目,是基于 SOAP 和 WSDL 的 Web 服务...
用于入门学习axis2,部署好即可用! //初始化文件 AxisProjectStub stub = new AxisProjectStub(); AxisProjectStub.Showname request = new AxisProjectStub.Showname(); request.setName("张三"); String name =...
本压缩包文件包含了关于Axis2的入门文档、新手教程以及在MyEclipse集成开发环境下的安装步骤,非常适合初学者进行学习。 1. **Axis2入门文档**:Axis2的核心概念包括模块、服务、消息引擎和服务部署。模块是Axis2的...
**标题:“Axis2入门实例”** 在IT领域,特别是Web服务开发中,Apache Axis2是一个广泛应用的SOAP(简单对象访问协议)服务器和客户端框架。它提供了高性能、灵活且可扩展的环境来创建和部署Web服务。这篇教程将带...
通过这篇Java版的Axis2入门教程,我们了解到如何轻松地利用Axis2构建和发布WebService,无需繁琐的配置文件。这种简化的方法使得开发人员可以更加专注于服务逻辑,而不用过于关心服务的底层实现。同时,由于Axis2的...
### AXIS2 入门文档知识点概述 #### 一、AXIS2 概述 - **定义**:AXIS2作为Apache Axis的后继版本,旨在提供一个更为灵活、高效且易于扩展的SOAP引擎。 - **架构特点**: - 基于全新的体系结构设计,与之前的Axis1...
本资料集合包括了“AXIS2入门”、“AXIS2进阶”以及一个具体的“WebService实例”,旨在帮助初学者和有经验的开发者深入理解AXIS2及其在Web服务中的应用。 入门篇可能涵盖了以下内容: 1. **AXIS2基础概念**:介绍...
这个简明教程将引导你入门Axis2的使用。 首先,我们创建一个名为`StockQuoteService`的Java类,它包含了获取股票价格(`getPrice`)和更新股票价格(`update`)的方法。这里的`StockQuoteService`是一个简单的POJO...
本入门教程将帮助你理解如何使用AXIS2来创建、发布和调用SOAP Web服务。首先,你需要了解AXIS2的架构,它主要由以下几个部分组成: 1. **Service Archive (AAR)**:这是AXIS2中服务的打包格式,类似于Java的JAR文件...
总结来说,Apache Axis2入门涉及创建一个简单的Java服务类,生成描述服务的WSDL文件,构建服务的部署档案,配置服务的行为,并最终在服务器上部署服务以供使用。这个过程展示了如何使用Axis2框架来快速开发和部署Web...
描述中的"Axis2教程.doc"确认了这个文件包含了一个Axis2的入门教程,适合想要学习或了解Axis2基础的人群。 **Axis2基础知识** Axis2是基于Apache Axis1的一个全新设计和实现,它是用Java语言编写的,用于处理SOAP...
### Axis2 开发 Web Services 入门 #### 知识点概述 本文旨在介绍如何使用 Axis2 开发 Web Services 的全过程,包括环境搭建、插件安装等基础准备工作,以及具体的开发流程与实例演示。 #### 1. 环境搭建 ##### ...
本教程将引导你快速入门,掌握使用Axis2创建Web服务的基本步骤。 **一、了解Axis2** Axis2是Axis1的下一代产品,它提供了更强大的功能和更高的性能。Axis2基于模块化架构,支持多种传输协议(如HTTP、HTTPS、SMTP...
【Axis实践之Axis入门】 Axis是一个流行的开源SOAP(Simple Object Access Protocol)库,它允许开发者在Java平台上构建和部署Web服务。本篇文章将带你逐步了解如何在Tomcat服务器上安装和配置Axis,以便开始你的...