0

我在使用Apache CXF framework. 我想将服务器错误记录到外部文件而不是终端。服务器的一段代码;

server= new JaxwsNotificationBroker("Hello",..);
server.setAddress("http://localhost:" + brokerPort + "/wsn/NotificationBroker");

我试过这个来记录;

server.getInInterceptors().add(new LoggingInInterceptor());
server.getOutInterceptors().add(new LoggingOutInterceptor());

但它给出了错误The method getInInterceptors() is undefined for the type JaxwsNotificationBroker

有什么方法可以记录错误JaxwsNotificationBroker吗?

谢谢

4

4 回答 4

2

你可以在里面添加loggingInInterceptor&logOutInterceptorcxf:bus

<cxf:bus>
    <cxf:ininterceptors>
      <ref bean="loggingInInterceptor" />
    </cxf:ininterceptors>
    <cxf:outinterceptors>
      <ref bean="logOutInterceptor" />
    </cxf:outinterceptors>
  </cxf:bus>
于 2012-09-21T04:06:04.283 回答
0

如果您使用的是 spring,请将其添加到您的 spring 配置文件中:

    <cxf:bus>
    <cxf:features>
        <cxf:logging />
    </cxf:features>
</cxf:bus>

不要忘记将 cxf 命名空间添加为

xmlns:cxf="http://cxf.apache.org/core"
于 2012-07-11T11:53:13.763 回答
0

如果您使用 log4j 进行日志记录,则必须将 META-INF/cxf/org.apache.cxf.Logger 文件放在类路径中,其中包含“org.apache.cxf.common.logging.Log4jLogger”类名作为单行,否则 cxf 将使用 JavaTM 2 平台的核心日志记录工具。

于 2012-07-11T13:43:38.173 回答
0

出于某种原因,gnodet 希望让所有 WS-N 的东西尽可能独立于 CXF,并且只依赖于纯 JAX-WS 的东西。因此,像 CXF 拦截器这样的好方法是不可能的。:-(

查看代码,现在唯一的选择是编写一个调用 super.register 方法的 JaxwsEndpointManager 的子类,然后将其转换为 CXF EndpointImpl,并在那里设置拦截器。不是很理想。:-(

于 2012-07-16T21:13:56.903 回答