⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channelinterceptor.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -