axis2记录响应请求

时间:2013-10-25 06:53:13

标签: java web-services soap axis2 axis

我是Web Service的新手。

我有一个Web服务公开,所以客户端正在使用它,但由于服务的重要性,我们希望Log SOAP Request和SOAP Response流入IN和OUT。

我正在使用Axis2-1.6.2 这是我到目前为止尝试过的,我编写了一个自定义Handler和Module类

import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.Handler;
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogHandler extends AbstractHandler implements Handler {
    private static final Log log = LogFactory.getLog(LogHandler.class);
    private String name;

    public String getName() {
        System.out.println("LogHandler.getName()");
        return name;
    }

    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
        log.info(msgContext.getEnvelope().toString());
        System.out.println("LogHandler.invoke()");
        return InvocationResponse.CONTINUE;        
    }

    public void revoke(MessageContext msgContext) {
        System.out.println("LogHandler.revoke()");
        log.info(msgContext.getEnvelope().toString());
    }

    public void setName(String name) {
        System.out.println("LogHandler.setName()");
        this.name = name;
    }
}

我还为上面的Handler编写了模块

public class LoggingModule implements Module {
   //implemented methods
}

从Handler上面,我能够记录传入SOAP请求和传出SOAP响应。

但是问题是,我一次收到很多请求,所以如果我写了Plain Request and Response,那么在查看Logs时我无法确定响应是什么。

记录一般写入

Request1 SOAP 
Request2 SOAP 
Response1 SOAP
Request3 SOAP
Request4 SOAP
Response2 SOAP

invoke(MessageContext msgContext)当请求进入并且响应消失时,将调用此方法。有什么我可以获得请求SOAP,而它被调用的响应时间。

所以,我想要一些解决方案,我可以在Response SOAP中整合Request SOAP,所以1 Log完成Request-Response。

如果任何机构可以建议一些好的解决方案,那将会有所帮助。

1 个答案:

答案 0 :(得分:1)

您正在获取请求并记录响应,因为您在IN / OUT流程中注册了处理程序..

比如说,如果您在流出处注册处理程序,您将能够选择相关的请求和响应。也就是说,从响应messgaecontext,您可以访问您的请求消息上下文。从那里,您可以阅读您的请求消息。[1]

但是在这里您会看到一个问题,如果您的请求失败,您将无法在流出中捕获它。该日志可能会错过。

[1] http://vvratha.blogspot.com/2013/05/accessing-request-messagecontext-from.html