【问题标题】:How to log unhandled exceptions using spring-ws如何使用 spring-ws 记录未处理的异常
【发布时间】:2013-09-02 01:49:30
【问题描述】:

spring web services (spring-ws) 有一个默认的 SimpleSoapExceptionResolver,它会将任何未处理的异常作为 SOAP 错误返回给客户端。这很好。

但是,我还希望它在服务器上记录异常,以便我们可以看到支持该服务。

SimpleSoapExceptionResolver 通过 AbstractEndpointExceptionResolver 有一个属性可以设置为启用日志记录 (setWarnLogCategory)。

如何获取框架创建的 SimpleSoapExceptionResolver 实例的句柄以设置 warnLogCategory 属性?

谢谢, 丹。

【问题讨论】:

  • 其实我可以看到异常是由 SoapFaultAnnotationExceptionResolver 而不是 SimpleSoapExceptionResolver 处理的。
  • 我已经设法通过将容器注入到一次性 bean 中来做到这一点,但必须有一种更清洁的方式 @Named public class ConfigurationBean { @Inject SoapFaultAnnotationExceptionResolver resolver; @PostConstruct public void initialise() { resolver.setWarnLogCategory("Dingbats"); } }
  • 你能把你的答案放在下面的答案中而不是 cmets 中吗?它可以将其标记为已接受的答案吗?

标签: java spring web-services spring-ws error-logging


【解决方案1】:

reference documentation 说:

端点异常解析器由 MessageDispatcher,因此不需要显式配置。

所以只需实例化类并设置属性:

<bean id="exceptionResolver" class="org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver">
  <property name="warnLogCategory" value="com.mycompany.category"/>
</bean>

【讨论】:

  • 我已经尝试过你的建议,在调试器中我可以看到调用了 setWarnLogCategory。但是,当调用 web 服务并抛出异常时,spring-ws 正在使用没有设置属性的解析器的不同实例。
  • 澄清一下,如果我按照您的建议添加 bean 定义,我可以看到 SoapMessageDispatcher.enpointExceptionResolvers 具有默认配置的 SoapFaultAnnotationExceptionResolver 和配置了记录器的附加实例。没有记录器的默认值是列表中的第一个,因此带有记录器的附加值永远不会被触发。
  • 需要设置order属性=1,否则第二个resolver会将异常处理标记为已解决。见stackoverflow.com/a/14570833/2066598
【解决方案2】:

这是一种可能性,使用容器注入在单次使用的 bean 中对其进行处理

必须有一种方法可以做到这一点,而不必创建 java 类,唯一的目的就是配置一个 spring bean。

  @Named public class ConfigurationBean {

     @Inject SoapFaultAnnotationExceptionResolver resolver;

  @PostConstruct public void initialise() {
     resolver.setWarnLogCategory("Dingbats"); 
  }
} 

【讨论】:

  • 可以直接注入任何方法:@Autowire public void configureReolver(SoapFaultAnnotationExceptionResolver resolver) { ... }
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 2014-10-28
  • 2020-02-04
  • 2010-10-23
相关资源
最近更新 更多