`

使用Axis2开发WebService-示例

    博客分类:
  • SOA
阅读更多
本文介绍如何开发一个基本的WebService,不涉及具体IDE.

首先,编写一个WSDL文件.
hello.wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="hello" targetNamespace="http://www.bisoft.tl/hello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.bisoft.tl/hello/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
	<wsdl:types>
		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			targetNamespace="http://www.bisoft.tl/hello/">
			<xsd:element name="helloRequest">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="msg" type="xsd:string"></xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="helloResponse">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="rtn" type="xsd:string"></xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="helloRequest">
		<wsdl:part name="helloRequest" element="tns:helloRequest"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="helloResponse">
		<wsdl:part name="helloResponse" element="tns:helloResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:portType name="HelloService">
		<wsdl:operation name="hello">
			<wsdl:input message="tns:helloRequest"></wsdl:input>
			<wsdl:output message="tns:helloResponse"></wsdl:output>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="binding1" type="tns:HelloService">
		<soap:binding style="document"
			transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="hello">
			<soap:operation soapAction="http://www.bisoft.tl/hello/hello" />
			<wsdl:input>
				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="WebService">
		<wsdl:port name="Port1" binding="tns:binding1">
			<soap:address location="http://localhost:8080/services" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>


下面是定义的Web服务的名字,Axi2根据这个生成对应的服务端骨架类WebServiceSkeleton和客户端存根类WebServiceStub.location定义Web服务发布的路径.此处既是http://localhost:8080/services/WebService.
<wsdl:service name="WebService">
		<wsdl:port name="Port1" binding="tns:binding1">
			<soap:address location="http://localhost:8080/services" />
		</wsdl:port>
	</wsdl:service>


从上面可以看出,一个WSDL文件由TYPES, MESSAGE, PORTTYPE, BINDING, PORT, SERVICE 六部分组成.

其次,利用工具类生成服务端骨架类及消息对应的POJO等.
1.将hello.wsdl放入工程的resources目录下
2.创建工具类CodeGenerator
package std.ws.util;

import org.apache.axis2.wsdl.WSDL2Code;

public class CodeGenerator {
	
	public static void main(String[] args) throws Exception {
		WSDL2Code.main
		(
			new String[]
			    {
					"-ss",
					"-sd",
					"-S", "src",
					"-R", "src/META-INF",
					"-ns2p", "http://www.bisoft.tl/hello=tl.bisoft.hello",
					"-uri", "resources/hello.wsdl" 			
			    }
		);
		System.out.println("Done!");
	}

}



运行工具类,刷新工程,会在src目录下生成服务端骨架类及消息对应的POJO及资源文件.


注意引入工程所依赖的包,推荐使用Maven.

最后,部署服务端:
在工程内导出JAR包,对应的lib中的JAR文件,资源文件.




将导出的JAR包重命名为WebService.aar. 这是的名字注意与WSDL中定义的相同.

下载Aix2 Server,
http://219.239.26.9/download/1615051/1709442/2/zip/68/224/1257570511428_224/axis2-1.5.1-bin.zip


解压并将WebService.aar部署到axis2-1.5.1\repository\services\目录下,启动Aix2 Server.运行axis2-1.5.1\bin\axis2server.bat.

打开浏览器,
http://localhost:8080/axis2/services
显示如下:


服务端已经成功部署.


接下来是客户端.
1. 在另一个工程中,创建resources目录,并将服务端的hello.wsdl复制过来.创建工具类生成客户端存根.
package std.ws.client.util;

import org.apache.axis2.wsdl.WSDL2Code;

public class CodeGenerator {
	public static void main(String[] args) throws Exception {
		WSDL2Code.main(new String[] { 
				"-S", "src", 
				"-R", "src/META-INF", 
				"-ns2p", "http://www.bisoft.tl/hello=tl.bisoft.hello", 
				"-uri", "resources/hello.wsdl" });
		System.out.println("Done!");
	}
}



2. 编写测试类
package std.ws.client;

import java.rmi.RemoteException;

import tl.bisoft.www.hello.WebServiceStub;
import tl.bisoft.www.hello.WebServiceStub.HelloRequest;
import tl.bisoft.www.hello.WebServiceStub.HelloResponse;

public class WSClient {
	public static void main(String[] args) throws RemoteException {
		String endpoint = "http://localhost:8080/axis2/services/WebService";
		WebServiceStub stub = new WebServiceStub(endpoint);

		HelloRequest request = new HelloRequest();
		request.setMsg("hello, bisoft!");

		HelloResponse reponse = new HelloResponse();
		reponse = stub.hello(request);
		String rtn = reponse.getRtn();
		System.out.println(rtn);
	}
}



3.运行测试类,在控制台输出测试结果为:
hello, bisoft!

4.去Aisx2服务端也会输出:
server recv: hello, bisoft!


Axis2服务端默认会生成异步与同步方法,因此异步处理只修改客户端即可.
异步处理客户端:
public class WSClient {
	public static void main(String[] args) throws IOException {
		String endpoint = "http://localhost:8080/axis2/services/WebService";
		WebServiceStub stub = new WebServiceStub(endpoint);

		HelloRequest request = new HelloRequest();
		request.setMsg("hello, bisoft!");

		WebServiceCallbackHandler callback = new WebServiceCallbackHandler() {

			public void receiveResulthello(HelloResponse response) {
				String rtn = response.getRtn();
				System.out.println("async message!");
				System.out.println(rtn);
			}
		};

		stub.starthello(request, callback);

		System.out.println("Please enter to exit!");

		new BufferedReader(new InputStreamReader(System.in)).readLine();

	}
}




  • 大小: 4.8 KB
  • 大小: 11.5 KB
  • 大小: 19.5 KB
分享到:
评论

相关推荐

    axis2-WebService-开发指南.docx

    Axis2 WebService 开发指南 Axis2 是一个基于 Java 的开源 WebService 框架,具有高效、灵活、可扩展等特点。...通过本指南,开发者可以快速掌握 Axis2 的开发和使用,实现高效、灵活的 WebService 开发。

    axis2例子 webservice axis2 示例

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

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

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

    axis2实现webservice

    ### Axis2实现WebService知识点 #### 一、Axis2简介 - **定义**:Apache Axis2是基于Java的一个开源的WebService框架,它支持...这为开发者提供了一个清晰的指南,帮助他们更好地理解和使用Axis2进行WebService开发。

    WebService-Axis2 详细讲解

    Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的Web Service引擎,它是Apache SOAP项目的后续产品,主要用Java语言实现。 Axis2的核心功能包括: 1. **消息处理**:Axis2能够处理SOAP 1.1和1.2消息,...

    使用axis2发布WebService简单示例

    Axis2是Apache软件基金会开发的一个Web服务框架,专为高性能和可扩展性而设计。本文将深入探讨如何使用Axis2发布一个简单的Web服务,并提供相关知识点。 1. **Web服务基础**: Web服务基于开放标准,如SOAP...

    SpringBoot开发WebService之Axis示例

    在本文中,我们将深入探讨如何使用SpringBoot框架开发基于Axis的Web服务。SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供...

    [JAVA]-Axis-Webservice-Demo

    2. 使用Axis发布服务:有了接口和实现后,使用Axis的`wsdl2java`工具生成服务端代码。这个工具会根据你的接口生成相应的ServerStub和服务部署文件。然后,将服务部署到Axis服务器上,通常是在Tomcat或Jetty等Servlet...

    axis2使用方法-java+webservice

    下面主要介绍使用 Axis2 开发一个不需要任何配置文件的 WebService,并在客户端使用 Java 和 C# 调用这个 WebService。 Axis2 下载和安装 Axis2 的下载和安装可以从 Apache 官方网站下载最新版本的 Axis2,下载...

    axis2;WebService

    【Axis2 WebService 开发指南】是关于使用Apache Axis2框架创建和操作Web服务的教程。Axis2是Axis1的升级版,提供了更多的功能和改进的性能。在开始之前,你需要下载并安装必要的开发工具,包括Axis2的jar包和...

    axis2-1.4.1-bin

    描述中提到,“axis2可以根据wsdl生成WebService文件代码”,这表明Axis2具有Wsdl2Java的功能。WSDL(Web Services Description Language)是一种XML格式,用于定义Web服务接口和绑定。通过提供一个WSDL文件,Axis2...

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

    本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这是一个强大的Java开发平台,支持多种开发任务,包括Web服务的开发和调试。 2. ...

    axis2-1.6.3-bin

    4. **示例和服务**:可能包含一些预打包的示例服务,用于快速了解如何在Axis2上开发和部署服务。 5. **文档**:用户指南、API参考和其他帮助材料,协助开发者理解和使用Axis2。 6. **依赖库**:Axis2可能会依赖其他...

    axis2_WebService_开发指南

    Axis2的简单WebService示例包括编写服务器端代码,如HelloWorldService类。这个类提供了两个简单的方法,sayHello和getAge,分别用于返回问候语和随机年龄。需要注意的是,在进行示例演示时,该类未使用package声明...

    webservice-axis2

    标题"webservice-axis2"暗示了本压缩包主要涉及的是使用Apache Axis2来开发和部署Web服务的内容。Apache Axis2是Axis1的升级版,其设计目标是提高性能、增强可扩展性和提供更好的模块化结构。它是Apache SOAP...

    axis2开发webservice心得

    在进行WebService的开发过程中,特别是在使用Axis2框架时,往往会遇到各种挑战与难题。本文将结合实践经验,分享在使用Axis2进行WebService开发时的一些心得和解决方案,希望能够帮助正在学习的朋友少走弯路。 ####...

    axis2webservice接口例子

    标题中的“axis2webservice接口例子”指的是使用Apache Axis2框架创建的一个Web服务接口实例。Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个...

    axis2-1.6.2.zip

    Axis2是Apache软件基金会开发的一款Java Web服务框架,主要用于构建和部署Web服务。在Web服务领域,Axis2扮演着核心的角色,它提供了丰富的功能来支持服务导向架构(SOA)。标题中的"axis2-1.6.2.zip"指的是Axis2的...

Global site tag (gtag.js) - Google Analytics