在 CXF Web 服务中检索 WS 请求



我得到了一个CXF OSGi Web服务(基于servicemix中的示例演示:https://github.com/apache/servicemix/tree/master/examples/cxf/cxf-jaxws-blueprint(

Web 服务工作正常,我调用该服务的所有可用实现方法。

我的问题是如何在 WS 方法中检索请求并以字符串 XML 格式解析。

我发现这在拦截器中是可能的,但我也想在我的方法中使用 WS-Request。

为了将请求存储在数据库中,我建议扩展新的 CXF 消息日志记录。

您可以实现写入数据库的自定义 LogEventSender。

我有类似的要求,一旦调用方法,我需要将数据保存到数据库中。我用ThreadLocal LoggingInInterceptorLoggingOutInterceptor.例如,在 LoggingInInterceptor 中,我曾经将消息设置为 ThreadContext,在 webservice 方法中使用 LoggingContext.getMessage() 获取消息,而在 LoggingOutInterceptor 中,我曾经删除消息(注意:这里需要小心,您需要从线程上下文中明确删除消息,否则您最终会出现内存泄漏,并且客户端代码拦截器被逆转。

public class LoggingContext {
    private static ThreadLocal<String> message;
    public static Optional<String> getMessage() {
        return Optional.ofNullable(message.get());
    }
    public static void setMessage(final String message) {
        LoggingContext.message = new ThreadLocal<>();
        LoggingContext.message.set(message);
    }
}

不是这个问题的答案,但我最终通过使用 JAXB 完成了我的任务并在那里做了一些操作。

相关内容

  • 没有找到相关文章

最新更新