如何在axis2 Web服务中读取SOAP原始请求和响应消息

时间:2014-03-24 08:24:01

标签: java xml web-services soap axis2

我正在使用axis2 web-service客户端,我想捕获请求和响应原始xml。我创建了一个LogHandler来读取响应原始xml,但我不知道如何在axis2 webservice中配置这个LogHandler文件。你能帮我解决一下如何配置这个LogHandler,或者告诉我是否有办法获取请求和响应xml。

import org.apache.axis2.AxisFault;`enter code here`
import org.apache.axis2.context.MessageContext;`enter code here`
import org.apache.axis2.engine.Handler;`enter code here`
import org.apache.axis2.handlers.AbstractHandler;`enter code here`
import org.apache.axis2.description.AxisService;`enter code here`
import org.apache.log4j.Logger;`enter code here`
public class LogHandler extends AbstractHandler implements Handler {
    private static Logger logger = Logger.getLogger(LogHandler.class);

    private String name;

    public LogHandler() {
        System.out.println(" & from LogHandler &&& constructor :");
    }
    public String getName() {
        System.out
                .println("LogHandler.getName() LogHandlerLogHandlerLogHandlerLogHandlerLogHandler");
        return name;
    }
    public InvocationResponse invoke(MessageContext msgContext)
            throws AxisFault {
        logger.info("***" + msgContext.getEnvelope().toString());
        System.out.println("LogHandler.invoke()"
                + msgContext.getEnvelope().toString());
        AxisService axService = msgContext.getAxisService();
        logger.info("*Service******" + axService.toString());
        System.out.println("*axService******" + axService.toString());

        return InvocationResponse.CONTINUE;
    }
    public void revoke(MessageContext msgContext) {
        System.out.println("& LogHandler.revoke()");
    }
    public void setName(String name) {
        System.out.println("LogHandler " + name);
        this.name = name;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以定义自定义阶段并在那里添加处理程序,并查看处理程序是否执行。 //我在axis2.xml中添加了以下配置,但服务没有运行//在某处你的消息流被破坏了。

选中此flowing guide.