Web Service的Handler配置
来源:互联网 发布:阿里云企业邮箱收费吗 编辑:程序博客网 时间:2024/06/08 14:21
老大要求用web service实现一个增值服务,业务到很简单,于是顺着小研究了下,公司很守旧,只让用Axis,
而且还是1.4的,不过引擎也就只是一些配置的玩意。
用Eclipse wtp开发web service实在太方便了,打算加几个handler玩一下,无意看到一篇文章,关于handler
描述的很全面 使用Handler来增强Web服务的功能 ,看完之后才发现是别人2003年的文章,感叹一下,自己真落
后啊!
我参照这篇文章,共配了三个handler,创建的handler必须继承BasicHandler,其次必须在wsdd文件里配置,我这里是server-config.wsdd,从这两点来说跟servlet的filter很像。
这是第一个handler用来写日志滴。
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Date;
import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
public class LogHandler extends BasicHandler ...{
public void invoke(MessageContext msgContext) throws AxisFault ...{
// TODO Auto-generated method stub
//每当web服务被调用,都记录到log中。
PrintWriter writer = null;
try ...{
//handler代表当前的服务
Handler handler = msgContext.getService();
//调用父类的getOption用于获得wsdd文件配置的filename属性
String filename = (String)getOption("filename");
if (filename == null || "".equals(filename))
throw new AxisFault("Server.NoLogFile", "No log file configured for the LogHandler!", null, null);
FileOutputStream fos = new FileOutputStream(filename, true);
writer = new PrintWriter(fos);
Integer counter = (Integer)handler.getOption("accesses");
if (counter == null)
counter = new Integer(0);
counter = new Integer(counter.intValue() + 1);
Date date = new Date();
msgContext.getMessage().writeTo(System.out);
String result = "在" + date + ": Web 服务 " + msgContext.getTargetService() +
" 被调用,现在已经共调用了 " + counter + " 次.";
handler.setOption("accesses", counter);
writer.println(result);
} catch (Exception e) ...{
e.printStackTrace();
throw AxisFault.makeFault(e);
}
finally...{
if (writer != null)
writer.close();
}
}
}
在server-config.wsdd文件的配置如下
<parameter name="filename" value="c:/MyService.log"/>
</handler>
wsdd文件的根节点是deployment,其下节点globalConfiguration,handler,service等。
这个就放在globalConfiguration节点之后,service节点之前,和其他的handler同级关系。
紧接着在找到服务的service节点,比如我这里的web service服务叫ReceviceInfo。
<!-- 这里添加handler -->
<operation name="receviceInfo" qname="ns1:receviceInfo" returnQName="ns1:receviceInfoReturn" returnType="xsd:string" soapAction="" xmlns:ns1="http://business.mccservice.whty.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<parameter qname="ns1:serviceId" type="xsd:string"/>
<parameter qname="ns1:content" type="xsd:string"/>
</operation>
然后在注释内容为"这里添加handler"的地方添加如下代码
<handler type="logging"/>
<!-- 这里可以配置多个handler -->
</requestFlow>
这样配置就完成了。调用服务的方法前会先进入LogHandler来写日志内容。
其他两个配置相同,AuthenticationHandler我用来验证ip,用户名和密码,AuthorizationHandler用来验证该用户的
权限。
Axis还提供了两个Monitor来监听客户端和服务端的信息传送和返回情况,SOAPMonitor用来查看SOAP消息,
TCPMonitor用来查看http消息,想使用TCPMonitor工具很方面,在命令行窗口下输入
>cd %AXIS_HOME%/WEB-INF/lib/
>java -classpath axis.jar org.apache.axis.utils.tcpmon
就可看到界面。SOAPMonitor可以参看apache的文档 我弄了一个下午没成功,相当烦,最后就放弃了。
- Web Service的Handler配置
- web service 的handler使用
- Web Service之Handler的日志操作
- Web Service之Handler的验证和授权
- 使用handler对web service进行访问的认证实现
- XFire的Web Service服务器端快速配置
- XFire的Web Service服务器端快速配置
- 用 eclipse 配置 web service的注意事项
- cxf web service 的maven配置
- IIS 配置web service
- 查看 Web Service 配置
- WEB Service配置
- Web Service配置安全
- android的service、handler、asyntask
- 配置与实现简单的基于Axis的Web Service
- 基于Axis2的自动化可配置的Web Service开发
- 教程: JAVA WEB SERVICE-weblogic81的服务配置
- 配置SAP ECC直接调用外部系统的Web Service
- 人生值得珍藏的80句话
- 大四了
- Java中类的显式动态加载的两种方式
- 3D游戏引擎剖析
- 基于Hibernate3.2 Hibernate tools 的使用
- Web Service的Handler配置
- 有关QueryInterface函数
- Petshop4.0系统架构设计
- windows api之文本和字体函数
- Eclipse中使用CVS 的一些注意事项
- Crystal Report TCrpeDS 的Error 717 的错误排除
- RMI远程方法调用讲解教程
- 关于ant的build的学习 hibernate中的一个例子 HelloWorld的
- FormatMessage错误消息处理函数