`
cuisuqiang
  • 浏览: 3960381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670187
社区版块
存档分类
最新评论

axis2发布webservice各种方式实例

    博客分类:
  • J2EE
阅读更多

 

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @说明 这个是作为服务端的方法类,不能带有命名空间,方法必须为public
 */
public class MyAxis2Service {
	/**
	 * @说明 请求的方法,输出接收到的参数,返回时间戳字符串
	 */
	public String getServiceInit(String name) {
		System.out.println("you name is :" + name);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return format.format(new Date());
	}
	/**
	 * @说明 下载图像
	 */
	public byte[] dowImageWithByte() {
		byte[] imageByte = null;
		try {
			// 下面的代码调用uploadImageWithByte方法上传图像文件
			// 打开图像文件,确定图像文件的大小
			java.io.File file = new java.io.File("c:\\test.jpg");
			java.io.FileInputStream fis = new java.io.FileInputStream(
					"c:\\test.jpg");
			// 创建保存要上传的图像文件内容的字节数组
			imageByte = new byte[(int) file.length()];
			fis.read(imageByte);
		} catch (Exception e) {
			return null;
		} finally {
		}
		return imageByte;
	}
	/**
	 * @说明 上传图像,imageByte参数表示上传图像文件的字节,length参数表示图像文件的字节长度(该参数值可能小于imageByte的数组长度)
	 */
	public boolean uploadImageWithByte(byte[] imageByte, int length) {
		FileOutputStream fos = null;
		try {
			// 将上传的图像保存在D盘的test1.jpg文件中
			fos = new FileOutputStream("d:\\test1.jpg");
			// 开始写入图像文件的字节
			fos.write(imageByte, 0, length);
			fos.close();
		} catch (Exception e) {
			return false;
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (Exception e) {
				}
			}
		}
		return true;
	}
}

 

昨天做了使用axis2做客户端的示例,今天来做使用axis2发布自己的服务。首先到官方下载axis2-1.6.1-war.zip,解压后会得到能够在tomcat上部署的war文件,部署后可以在基于该工程的情况下进行我们的服务发布。我的附件中给的工程可以直接部署到tocmat下,由于上传限制,我删除了lib下的所有包,大家可以将下载的包中的jar拷贝到该工程里面,另外还需要拷贝spring.jar。

 

如果是做接口测试想快速做一个接口以供调用,可以在WEB-INF下创建一个pojo文件夹,然后将自己的类放到该文件夹下面即可完成发布。示例工程里面的MyAxis2Service.class源码是:
 
其实就是昨天的那个类。访问http://localhost:8080/axis2/,可以看到axis2后台管理页面,点击services进入服务列表。其中version是默认的一个接口。
 
以上方法固然方便,不过不能定义自己的包路径。下面来做一下包含包路径的pojo发布。
首先定义类:
package service;
public class MyService {
	/**
	 * @说明 接收参数,有返回值
	 */
	public String getGreeting(String name) {
		return "您好 " + name;
	}
	/**
	 * @说明 接收参数,无返回值
	 */
	public void update(String data) {
		System.out.println("<" + data + ">已经更新");
	}
}
 
再定义一个类,为了演示不同的配置方法:
package service;
public class MyServiceForGroup {
	/**
	 * @说明 接收参数,有返回值
	 */
	public String getGreeting2(String name) {
		return "你真好 " + name;
	}

	/**
	 * @说明 接收参数,无返回值
	 */
	public void update2(String data) {
		System.out.println("<" + data + ">真的已经更新");
	}
}
 
下面再定义一个XML配置文件,定义一个services.xml,在里面增加内容:
<serviceGroup><!-- name 属性就是发布 webservice 的访问名称,一个service代表一个服务,每个服务内可包含多个方法 -->
	<service name="myService"><!-- 描述 -->
		<description>Web Service</description><!-- 指定服务类 -->
		<parameter name="ServiceClass">service.MyService</parameter>
		<!-- 用 operation 指定每一个方法的服务处理器 --><!-- 服务端使用什么样的方式发布WebService,对客户端并没有影响 -->
		<operation name="getGreeting">
			<messageReceiver
				class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
		</operation>
		<operation name="update">
			<messageReceiver
				class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
		</operation>
	</service><!-- 演示多个接口的配置方法 -->
	<service name="MyServiceForGroup">
		<description>Web Service2</description>
		<parameter name="ServiceClass">
			service.MyServiceForGroup
		</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>
 
下面在C盘或自己看着办创建一个aws文件夹,里面再创建META-INF和service文件夹,其中service就是你的包路径。将services.xml放到META-INF下,将class文件放到service内。在控制台进入aws文件夹,记住了是文件夹内,然后执行 “jar cvf aws.aar .”,会在该文件夹内生成一个aws.aar文件,将该文件拷贝到apache-tomcat-6.0.16\webapps\axis2\WEB-INF\services文件夹内即可完成发布。命令中的aws.aar是要生成的问价的名称,.是生成路径。
 
因为大部分项目都是使用Spring的,如果将自己的接口和spring结合,那会是多么的美好呀。下面就来做这样的例子。
提示做该示例时别忘了增加spring.jar包。
首先定义要发布的类:
package service;
public class SpringService {
	public String getGreeting(String name) {
		return "spring定制,欢迎你: " + name;
	}
}
 
其次在项目的web.xml中增加spring配置:
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>
 
在web.xml同级目录定义自己的spring配置文件applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
	<bean id="springService" class="service.SpringService"></bean>
</beans>
 
同样要定义services.xml,在里面增加内容:
<serviceGroup>
<!-- Spring的配置方法 对于Spring的aar打包,WEB-INF\services目录中的.aar包中不需要包含.class -->
	<service name="springService">
		<description>Spring aware</description>
		<parameter name="ServiceObjectSupplier">
			org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
		</parameter>
		<parameter name="SpringBeanName">springService</parameter>
		<messageReceivers>
			<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
				class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
		</messageReceivers>
	</service>
</serviceGroup>
 
下面打包,刚才打包时我们必须把class文件打包在内,使用spring后就不用了。
建立文件夹aws,在里面创建META-INF文件夹,把services.xml拷贝到该文件夹。执行命令打包:“jar cvf aws.aar .”。
但是别忘了,spring使用的类的class文件要拷贝到apache-tomcat-6.0.16\webapps\axis2\WEB-INF\classes\service下面。
 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

2
1
分享到:
评论
1 楼 hishizhiyong 2013-12-17  
[color=red][/color][size=x-small][/size][align=center][/align]                   [b][/b][i][/i][u][/u]
引用

    [*]
[img][/img][url][/url][flash=200,200][/flash]

相关推荐

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

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

    webService—Axis实例webService—Axis实例webService—Axis实例

    webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例

    axis2发布webservice和调用实例

    本文将深入探讨如何使用Axis2发布Web服务以及进行客户端调用,这包括新手教程、详细的说明文档,以及实际操作的实例。 1. **Axis2简介** - Axis2是Apache软件基金会的项目,它是用于构建和部署Web服务的平台,支持...

    axis2webservice接口例子

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

    axis2-webservice新手教程实例

    本教程将引导初学者通过实例了解如何使用 Axis2 开发 Web 服务。 1. **环境搭建** 首先,你需要准备以下工具: - JDK 1.6 或更高版本 - Tomcat 5.0 或更高版本 - MyEclipse 5.0 或其他支持的 IDE - 下载 Axis2...

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

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

    eclipse+axis2=webservice实例-亲测

    eclipse+axis2学习webservice实例,亲测!

    基于Axis2的WebService的实例demo(包含jar包)

    **基于Axis2的WebService实例详解** 在Web服务领域, Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的开放源代码平台。它提供了一种高效、灵活且可扩展的框架,使得开发者能够轻松地创建和消费Web服务。...

    WebService之Axis2实例

    WebService之Axis2实例是Web服务开发中的一个重要环节,它基于SOAP协议,允许不同平台和语言间的应用程序进行通信。本文将详细介绍Axis2实例的创建、配置和运行,以及如何利用Eclipse IDE、JDK 1.7和Tomcat 7.0进行...

    axis2技术webservice实例

    使用axis2技术编写的webservice接口实例,直接放在应用服务器下便可使 用http://localhost:xxxx/axis2/service/来访问WSDL 业务源代码位于\WEB-INF\classes\HelloWorld.java

    axis2开发webservice

    在描述 "在 Eclipse 上使用 Axis2 编辑 WebService 和发布 WebService" 中,我们可以理解到,开发者将通过 Eclipse 这个流行的 Java IDE 来实现 WebService 的开发工作。Eclipse 提供了 Axis2 插件,使得开发者可以...

    axis 发布webservice的步骤

    为了更好地理解和实践这些步骤,可以参考给定的文档“Eclipse开发Axis_WebService实例总结_20100430.doc”。这个文档通常会包含详细的步骤、截图以及可能遇到的问题和解决方案,对于初学者非常有帮助。 总结,发布...

    axis2_WebService_开发指南

    总而言之,Axis2_WebService_开发指南涵盖了从基础准备到实例演示,再到高级特性的使用,为开发者提供了一套完整的Axis2 WebService开发教程。通过这个指南,开发者可以快速上手Axis2的使用,以及深入理解和应用其在...

    webservice发布包axis2

    综上所述,这个压缩包提供了一整套的Axis2 Web服务解决方案,包括服务端的部署环境和客户端的实例工程,对于理解和实践Web服务技术,特别是Apache Axis2的使用,是非常宝贵的资源。开发者可以通过研究这些文件,深入...

    Axis实现webservice完整实例

    ** Axis 实现 WebService 完整实例** 在 IT 领域,Web 服务是一种用于应用程序之间进行通信的标准协议,而 Axis 是一个流行的开源 Java 框架,它允许开发者轻松地创建和部署 Web 服务。本实例将详细介绍如何使用 ...

    经典入门:Axis2创建webservice.pdf

    【 Axis2 创建 Web Service 入门教程】 ...随着对 Axis2 框架的深入理解和实践,你可以构建更复杂的 Web Services,满足各种业务需求。记得保持对 Axis2 更新的关注,以便利用最新特性提高开发效率。

    用axis2搭建webservice

    这样,Axis2将在处理请求时使用Spring容器来实例化服务类。 6. **测试Web服务**:通过Axis2提供的内置Web服务器或自定义的HTTP服务器,可以测试Web服务是否正确运行。可以使用WSDL(Web Services Description ...

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

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

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

    AXIS2远程调用WebService是Java开发者在进行分布式服务交互时常用的一种技术。本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这...

Global site tag (gtag.js) - Google Analytics