channelinterceptor.java
来自「Xfire文件 用于开发web service 的一个开源工具 很好用的」· Java 代码 · 共 72 行
JAVA
72 行
package org.codehaus.xfire.management.mbeans;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.DefaultFaultHandler;
import org.codehaus.xfire.handler.Handler;
import org.codehaus.xfire.transport.Channel;
public class ChannelInterceptor implements MethodInterceptor
{
private ServiceStat serviceStat;
private Channel channel;
public ChannelInterceptor(Channel channel, ServiceStat serviceStat)
{
super();
this.serviceStat = serviceStat;
this.channel = channel;
}
public Object intercept(Object c, Method m, Object[] args, MethodProxy proxy)
throws Throwable
{
Object retVal = null;
if (m.getName().equals("receive"))
{
long now = System.currentTimeMillis();
MessageContext context = (MessageContext) args[0];
if (context.getFaultHandler() == null)
{
context.setFaultHandler(createFaultHandler());
}
retVal = proxy.invoke(channel, args);
// set the response type
long res = System.currentTimeMillis() - now;
serviceStat.setLastResponseTime(new Long(res));
serviceStat.setTotalRequestCount();
}
return retVal;
}
/**
* Create a Fault Handler which increases the failed request count.
*/
protected Handler createFaultHandler()
{
return new DefaultFaultHandler() {
@Override
public void invoke(MessageContext context)
throws Exception
{System.out.println("fault!!");
serviceStat.setFailedRequestCount();
super.invoke(context);
}
};
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?