文档章节

Axis2 create webservice implement

boonya
 boonya
发布于 2013/05/30 14:41
字数 734
阅读 194
收藏 3
前言:Web Service是现在最适合实现SOA的技术,而Axis2是实现Web Service的一种技术框架(架构)。 Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。 Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更强、 灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、 WS-ReliableMessaging 等)的实现中。Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。

Axis official web site : http://axis.apache.org/
Axis2 Java: http://axis.apache.org/axis2/java/core/
-截止:2013-05-30 12:57:00  最新的Axis2版本为1.6.2,我使用的是1.6.0

1、下载axis2.
  注:解压下载,找到bin目录下的axis2server.bat,双击启动axis2.
---准备需要用到的jar包:
activation-1.1.jar
 axiom-api-1.2.11.jar
 axiom-dom-1.2.11.jar
 axiom-impl-1.2.11.jar
 axis.jar
 axis2-adb-1.6.0.jar
 axis2-json-1.6.0.jar
 axis2-kernel-1.6.0.jar
 commons-codec-1.3.jar
 commons-httpclient-3.1.jar
 commons-logging-1.1.1.jar
 jaxrpc.jar
 wsdl4j-1.6.2.jar
 wstx-asl-3.2.9.jar
 XmlSchema-1.4.7.jar
2、编写Java Bean
---创建一个工程名为mywebsercice,并编写Java类。
package com.boonya.webservice; 
public class HelloWorld { 
    public String sayHello(String name) { 
         return "Hello, " + name + "\n"; 
   } 
}

3、编写服务配置
在再src下面建一个META-INF的文件夹,创建一个services.xml的文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- service (HelloWorld service name)-->
<service name="HelloWorld">
  <Description>helloWorld example description </Description>
  <!-- class -->
  <parameter name="ServiceClass" locked="false">com.boonya.webservice.HelloWorld</parameter>
  <!-- method -->
  <operation name="sayHello">
      <messageReceiver class="org.apache.axis2.rpc.receivers.RPCReceiver"/>
  </operation>
</service>

4、部署webservice服务
把这个工程打包为jar文件,然后把扩展名jar改为aar,放到TomCat目录\webapp\axis2\WEB-INF\services的目录下面,启动tomcat服务。
5、查看服务
在浏览器输入:http://localhost:8080/axis2/services/,如果看到HelloWorld服务表示web服务部署成功
6、编写测试客户端
package com.boonya.webservice;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.Iterator;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axiom.om.OMElement;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class HelloWorldClient
{

	public void testMethod()
	{
		String method = "sayHello";
		Service service = new Service();
		Call call = null;
		try
		{
			call = (Call) service.createCall();
			try
			{
				call.setTargetEndpointAddress(new java.net.URL("http://localhost:8080/axis2/services/HelloWorld"));
			} catch (MalformedURLException e)
			{
				e.printStackTrace();
			}
			call.setOperationName(new QName("http://com/boonya/webservice", method));
			call.setUseSOAPAction(true);
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
			call.setSOAPActionURI("http://com/boonya/webservice/GetServerList");
			String k = null;
			try
			{
				k = (String) call.invoke(new Object[]{});
				System.out.println(">>> " + k); // 返回值输出
			} catch (RemoteException e)
			{
				e.printStackTrace();
			} // 因为返回值是String类型,所以这里调用的返回值也是String类型
		} catch (ServiceException e)
		{
			e.printStackTrace();
		}
	}

	@SuppressWarnings(
	{ "rawtypes" })
	public void testMethodRpc() throws AxisFault
	{
		RPCServiceClient rpcClient = new RPCServiceClient();
		Options opt = new Options(null);
		opt.setTo(new org.apache.axis2.addressing.EndpointReference("http://localhost:8080/axis2/services/HelloWorld"));
		opt.setAction("urn:sayHello"); // 方法
		rpcClient.setOptions(opt);
		OMElement element = rpcClient.invokeBlocking(new QName("http://com/boonya/webservice", "sayHello"), new Object[]{ null }); // null表示没有参数传递

		Iterator values = element.getChildrenWithName(new QName("http://com/boonya/webservice", "return")); // return表示有返回值
		while (values.hasNext())
		{ // 遍历出获取的数据
			OMElement omElement = (OMElement) values.next();
			System.out.println(omElement.getText());
		}
	}
	
	public static void main(String[] args) throws AxisFault
	{
		HelloWorldClient client=new HelloWorldClient();
		client.testMethod();
		client.testMethodRpc();
	}

}
About resource from:http://www.360doc.com/content/08/0124/17/21290_1001075.shtml

© 著作权归作者所有

boonya
粉丝 79
博文 374
码字总数 74579
作品 0
海淀
高级程序员
私信 提问
加载中

评论(0)

使用axis2发布web service

Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的...

NotFoundException
2013/03/13
693
0
axis helloworld

Axis2创建WebService实例 博客分类: Java综合 WebServiceTomcatApacheWebXML 一、Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本: 可以下载如下两个zip包: ax...

itwriter
2014/08/22
119
0
Java 使用Axis实现WebService实例

版权声明:本文为博主原创文章,转载请标明出处!博客地址:http://blog.csdn.net/qazwsxpcm https://blog.csdn.net/qazwsxpcm/article/details/78003905 在上一篇WebService实例中,基于jdk...

虚无境
2017/09/16
0
0
webservice发布--使用axis2发布

如何使用axis2发布webservice? axis2发布webservice分为打包发布和不打包发布两种,今天主要研究了一下打包发布的方法 1.部署axis2框架(使用tomcat部署) 1.1 下载axis2的war包,测试使用的w...

程序员小虫
2014/10/23
1.8K
1
Eclipse中开发webservice

eclipse开发webservie 1.下载axis2相关架包----war,bin是必须的; axis2的eclipse插件(2个)-http://apache.dataguru.cn/axis/axis2/java/core/org.apache.axis2.eclipse.codegen.plugin0.0......

绿林小子
2015/11/04
182
0

没有更多内容

加载失败,请刷新页面

加载更多

Fedora 31 - 查杀木马

使用chkrootkit和rkhunter检查系统 #安装工具sudo dnf install chkrootkit rkhunter#修改配置##使用管理员邮箱地址sudo sed -i 's/^MAILTO=.*/MAILTO=admin@server.com/' /etc/sy......

wffger
19分钟前
37
0
检查目录是否存在,如果不存在则创建

我经常发现自己写的R脚本会产生大量输出。 我发现它更干净,可以将此输出放到自己的目录中。 我在下面编写的内容将检查目录是否存在并移入该目录,或者创建目录然后移入该目录。 有没有更好的...

javail
23分钟前
91
0
让你相见恨晚的Photoshop 使用技巧——用ps做后期渲染

无论是面对客户汇报方案还是在设计竞赛中脱颖而出,通过PS来渲染平面图都是至关重要的工作。无论何时,你的平面设计的出图质量便也是你的能力说明。 今天小编给大家带来真正的对建筑 / 规划/...

mac小叮当
26分钟前
80
0
推荐VSCode12个比较实用的插件

1、Auto Rename Tag ——自动重命名成对的HTML标记。假如你创建了一个<p>标记。现在你想更改它。有了这个软件,你只需要更改一个就行,另一个会自动修改。从理论上来说,使用这个软件可以把...

IT技术分享社区
31分钟前
65
0
LeetCode 347: 前 K 个高频元素Top K Frequent Elements

题目: 给定一个非空的整数数组,返回其中出现频率前 K 高的元素。 Given a non-empty array of integers, return the K most frequent elements. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2...

iCodeBugs
34分钟前
55
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部