`

web service中Handler的高级应用

阅读更多

1.编写服务器端代码:

package pack.java.web.service.handler;

import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

/***
 * 服务器端代码;
 * 继承basicHandler 抽象类,并且实现invoke方法;
 * @author Administrator
 *
 */
public class MyHandler extends BasicHandler{
	//版本号;
	private static final long serialVersionUID = 1453729851511344780L;
	
	private static long  COUNT =0L;
	private int requestCount = 0;
	
	//请求,调用;
	public void invoke(MessageContext arg0) throws AxisFault {
		// TODO Auto-generated method stub
		requestCount++;
		COUNT++;
		String status = (String)this.getOption("status");
		System.out.println("My Handler's status is:"+status+",count="+COUNT+",requestCount="+this.requestCount);
	}
}

 

2.编写myHandler.dess文件.

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
 xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<handler name="MyHandler" type="java:pack.java.web.service.handler.MyHandler">
		<parameter name="status" value="success" />
	</handler>
	<service name="MyHandlerWSDD" provider="java:RPC">
		<!-- Handler配置之前处理 -->
		<requestFlow>
			<handler type="MyHandler" />
		</requestFlow>
		
		<!-- 服务器的包和类,方法,范围范围配置. -->
		<parameter name="className" value="pack.java.web.service.WebServiceWSDD" />
 		<parameter name="allowedMethods" value="*"/>
 		<parameter name="scope" value="request"/>
 		
 		<!-- 通过 <requestFlow> 这个标签,引用到 WebServiceWSDD中,来处理.-->
		<requestFlow>
			<handler type="MyHandler"/>
		</requestFlow>
	</service>
</deployment>

 

3.拷贝myHandler.wsdd文件到Tomcat目录下的axis的Web-INF中,

 

 

4.发布web service.

F:\apache-tomcat-6.0.20\webapps\axis\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:9999/axis/services/MyHandlerWSDD myHandler.wsdd

 

发布结果:

Processing file myHandler.wsdd
<Admin>Done processing</Admin>

 

5.在浏览器中输入:获得url.

http://localhost:9999/axis/services/MyHandlerWSDD

浏览器中显示结果:

MyHandlerWSDD

Hi there, this is an AXIS service!

Perhaps there will be a form for invoking the service here...

 

5.编写客户端代码,

package pack.java.web.service.client.handler;

import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/***
 * 客户端;调用服务器端的方法;
 * @author Administrator
 *
 */
public class HandlerClientTest {
	
	/**
	 * 测试主方法;
	 * @param args
	 */
	public static void main(String[]args){
			String url="http://localhost:9999/axis/services/MyHandlerWSDD";
			Service service	=new Service();
			try {
				Call call=(Call) service.createCall();
				call.setTargetEndpointAddress(url);
				call.setOperationName(new QName(url,"hello"));
				try {
					String result=(String) call.invoke(new Object[]{"Peng Xiao Ting ",519});
					System.out.println(result);
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} catch (ServiceException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
}

 

 

调用hello方法时,在控制台得出的结果:

Peng Xiao Ting 520。

 

服务器端返回的结果:

 

- Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd
My Handler's status is:success,count=1,requestCount=1
this is my hello method.
a=Peng Xiao Ting
b=520
result=520
My Handler's status is:success,count=2,requestCount=2
this is my hello method.
a=Peng Xiao Ting
b=520
result=520
My Handler's status is:success,count=3,requestCount=3
this is my hello method.
a=Peng Xiao Ting
b=519
result=519 

分享到:
评论

相关推荐

    Android高级应用源码-Android调用Webservice.zip

    在Android开发中,调用Web服务是常见的需求,特别是与后端服务器进行数据交互时。本资源"Android高级应用源码-Android调用Webservice.zip...通过学习和实践,开发者可以掌握在Android应用中集成Web Service的完整流程。

    使用XFire+Spring构建Web Service

    XFire是一个高级的Web Service框架,与Axis2并列,提供了一种简洁的API来支持Web Service的各种标准协议,包括JSR181(Web服务注解)、WSDL2.0(Web服务描述语言)、JAXB2(Java XML绑定)以及WS-Security(Web服务...

    Android高级应用源码-android机票查询源码webservice实现.zip

    【Android高级应用源码——基于Web服务的机票查询系统实现】 在移动开发领域,Android作为全球最广泛使用的操作系统之一,其应用开发技术日新月异。本源码库主要涉及的是一个高级Android应用实例——机票查询系统,...

    Webservice之Axis高级编程

    3. **AXIS第三课:AXIS高级应用,使用Handler来增强Web服务的功能** Handler是Axis中一个强大的特性,允许开发者插入自定义逻辑在服务处理流程的各个阶段。你可以通过编写Handler来实现如认证、日志记录、消息转换...

    webService调用实例

    在提供的工程中,可能会包含一个客户端应用,它使用SOAP消息与远程Web Service交互。这可能涉及到创建SOAP请求,发送到服务端,然后接收并解析SOAP响应。理解SOAP请求和响应的结构,以及如何在客户端构造和解析它们...

    android面试题(高级)

    以上知识点都是高级Android开发者在面试中可能会遇到的,涵盖了Android平台本身以及与其紧密相关的Java Web和J2EE领域。准备面试时,深入理解和熟练运用这些知识,将有助于展示你的专业能力和全面技术视野。

    JAX-WS_Java API for XML Web Services

    然而,在许多现有的企业级应用中,JAX-WS仍然是核心组件,因为它能提供高度规范化和安全的Web服务交互。 总的来说,JAX-WS是Java平台中用于构建Web服务的重要工具,虽然现代趋势倾向于轻量级的RESTful API,但在...

    java_webservice_axis2简单开发实例

    【Java Webservice Axis2简单开发实例详解】 在Java开发中,Web Service是一种常见的通信机制,用于不同...在实际开发中,了解如何利用Axis2和其他Web Service框架(如JAX-WS)将有助于你构建健壮、高效的企业级应用。

    简单axis2例子实现.doc

    【描述】: "本教程主要讲解如何在myeclipse8.5中安装axis2插件并实现一个简单的Web Service应用。" 【标签】: "axis2" 【正文】: Apache Axis2是Apache软件基金会开发的一个Web Service框架,用于简化Web Service...

    使用jboss netty 创建高性能webservice客户端及服务端

    在实际应用中,为了提升性能,我们还需要关注以下几点: 1. 数据编码与解码:Netty提供了多种编解码器,如LineBasedFrameDecoder和LengthFieldBasedFrameDecoder,可以根据协议需求选择合适的解码器。 2. 异常处理:...

    WSIT指南-jax-ws指南

    ### WSIT指南-jax-ws指南 ...不仅可以快速构建功能完善的Web服务,还可以轻松地实现安全性和高级功能,如使用Handler进行消息处理。对于那些希望利用现代Web服务技术的开发者来说,这是一种非常有价值的学习资源。

    Android开发与应用——张荣,原书配套课件

    8.4 Web Service访问 8.5 小结 练习 第9章 多媒体应用 9.1 音频与视频的播放 9.1.1 MediaPlayer 9.1.2 SoundPool 9.1.3 VideoView 9.1.4 SurfaceView 9.2 摄像头的使用 9.2.1 摄像头意图Intent ...

    android 客户端与webservice之间的交互

    在实际应用中,Android客户端通常会通过以下步骤与Web Service交互: 1. **构建请求**:根据业务需求构造HTTP请求,包括URL、HTTP方法(GET、POST等)、请求头和请求体(对于POST、PUT等方法)。 2. **发送请求**...

    Axis WebService 技术指南,开发文档

    本指南将详细介绍如何使用 Axis 进行 WebService 开发,包括从基础入门到高级特性的应用。 ### 1. Axis 简单入门 在开始之前,你需要从官方网站下载 Axis 的工程和必要的库文件,例如 `axis-bin-1.4`。解压缩后,...

    移动开发经典丛书·Android 4高级编程(第3版)要积分

    《移动开发经典丛书·Android 4高级编程(第3版)》是一本深入探讨Android应用开发的专业书籍,针对Android 4版本进行了详细的讲解。这本书旨在帮助开发者掌握Android平台的高级特性,提升他们的开发技能,从而在...

    webservice,cxf

    本文将深入探讨“Web服务”(Web Service)及其与CXF框架的整合,包括纯JDK实现、CXF与Spring的集成以及CXF与Ajax的交互。同时,我们还将关注CXF拦截器的使用,并提供相关依赖的jar包。 首先,Web服务是一种基于...

    jetty简单启动web服务第二版

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛用于开发和部署Web应用程序。在“jetty简单启动web服务第二版”中,我们将深入探讨如何利用Jetty来运行多个Servlet,实现一个微型服务架构。在这...

    Android 游戏与应用开发最佳学习路线图 word版

    在Android游戏与应用开发的学习过程中,有一条清晰的路径可以帮助初学者逐步掌握所需技能。以下是一份详尽的学习路线图,涵盖了从基础到高级的各个关键知识点。 首先,要掌握核心Java,这是Android开发的基础。这...

Global site tag (gtag.js) - Google Analytics