我获得了一个CXF OSGi Web服务(基于servicemix中的示例演示:https://github.com/apache/servicemix/tree/master/examples/cxf/cxf-jaxws-blueprint)
Web服务工作正常,我调用了服务的所有可用实现方法。
我的问题是我如何在WS方法中检索请求并以字符串XML格式进行解析。
我发现这可以在拦截器内部进行日志记录,但我也希望在我的方法中使用WS-Request。
答案 0 :(得分:1)
为了在数据库中存储请求,我建议扩展new CXF message logging。
您可以实现写入数据库的自定义LogEventSender。
答案 1 :(得分:0)
我有类似的要求,我需要在调用方法后将数据保存到DB中。我曾使用ThreadLocal
和LoggingInInterceptor
以及LoggingOutInterceptor
。例如,在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);
}
}
答案 2 :(得分:0)
不是这个问题的答案,但我最终通过使用JAXB完成了我的任务,并在那里做了一些操作。