`

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 

分享到:
评论

相关推荐

    Axis高级编程

    最简单的发布AXIS的Web Service ...AXIS高级应用,使用Handler来增强Web服务的功能 AXIS高级应用,建立安全的AXIS服务 AXIS高级应用,在AXIS服务间传递JavaBean及其安全解决 使用TCPMonitor监控WebService SOAP消息

    Webservice之Axis高级编程

    1.3 AXIS第三课:AXIS高级应用,使用Handler来增强Web服务的功能 1.4 AXIS第四课:AXIS高级应用,建立安全的AXIS服务 1.5 AXIS第五课:AXIS高级应用,在AXIS服务间传递JavaBean及其安全解决 1.6 使用TCPMonitor监控...

    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 ...

    asp.net知识库

    在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 ...

    疯狂Android讲义源码

     12.3.1 在Android应用中使用  OpenGL ES 454  12.3.2 绘制平面上的多边形 457  12.3.3 旋转 463  12.4 绘制3D图形 465  12.4.1 构建3D图形 465  12.4.2 应用纹理贴图 469  12.5 本章小结 475  第13章 ...

    Spring Security 中文教程.pdf

    5.4. 在web应用中验证 5.4.1. ExceptionTranslationFilter 5.4.2. AuthenticationEntryPoint 5.4.3. 验证机制 5.4.4. 在请求之间保存SecurityContext 。 5.5. Spring Security中的访问控制(验证) ...

    Spring中文帮助文档

    3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...

    Spring Security-3.0.1中文官方文档(翻译版)

    5.4. 在web 应用中验证 5.4.1. ExceptionTranslationFilter 5.4.2. AuthenticationEntryPoint 5.4.3. 验证机制 5.4.4. 在请求之间保存SecurityContext 。 5.5. Spring Security 中的访问控制(验证) ...

    老罗android开发视频教程全集百度网盘下载

    使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在 foreground(前景)模式,背景运行的程序叫做Service。...

    SpringSecurity 3.0.1.RELEASE.CHM

    5.4. 在web应用中验证 5.4.1. ExceptionTranslationFilter 5.4.2. AuthenticationEntryPoint 5.4.3. 验证机制 5.4.4. 在请求之间保存SecurityContext。 5.5. Spring Security中的访问控制(验证) 5.5.1. 安全...

    php网络开发完全手册

    15.2 Web数据库的工作原理 240 15.3 使用PHP操作MySQL数据库 240 15.3.1 数据库服务器的连接与断开 241 15.3.2 选择数据库 242 15.3.3 执行SQL语句 242 15.3.4 获得查询结果集中的记录数 243 15.3.5 获得结果集中的...

    Spring API

    3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...

    spring security 参考手册中文版

    9.4 Web应用程序中的身份验证 81 9.4.1 ExceptionTranslationFilter 82 9.4.2 AuthenticationEntryPoint 82 9.4.3认证机制 82 9.4.4在请求之间存储SecurityContext 83 9.5 Spring Security中的访问控制(授权) 84 ...

    DWR中文文档.pdf

    83 10.1.1 TransformerFactoryConfigurationError 83 10.1.2 XML解析错误 83 10.1.3 使用weblogic的类路径问题 83 10.1.4 没有cookies的情况下用DWR 84 10.2 JavaScript高级应用 85 10.2.1 ...

Global site tag (gtag.js) - Google Analytics