如何报告 JAXWS SOAP 中的故障转移功能何时处于活动状态?

How to report when failover feature is active in JAXWS SOAP?

我有一个这样构建的客户端:

val strategy = new SequentialStrategy()
strategy.setAlternateAddresses(listOfAddresses)

val feature = new CircuitBreakerFailoverFeature(2, 60000)
feature.setStrategy(strategy)

val factory = new JaxWsProxyFactoryBean()
factory.setServiceClass(classOf[MyService])
factory.setAddress(primaryAddress)
factory.setFeatures(Lists.newArrayList(feature))
factory.create().asInstanceOf[MyService]

我现在遇到的问题是,当我的客户端由于与 primaryAddress 的连接问题而实际转到 alternative 地址之一时,我需要向监视工具报告。但是我找不到如何检测地址之间的那些切换的方法(我考虑过添加自定义拦截器,但我敢打赌有更好的方法来做到这一点)。正确的做法是什么?

看起来或多或少的正确方法是 inject 向 TargetSelector 报告逻辑,如下所示:

class MonitoredCircuitBreakerTargetSelector(errorReporter: Monitoring) extends CircuitBreakerTargetSelector {
  @Override
  protected void onFailure(context: FailoverTargetSelector#InvocationContext, ex: Exception)= {
    errorReporter.report(s"...")
    super.onFailure(context, ex)
  }
}

然后在 FailoverFeature

上调用 feature.setTargetSelector(new MonitoredCircuitBreakerTargetSelector(errorReporter))