CXF故障转移恢复

3
我有一个CXF JAX-WS客户端。我添加了故障转移策略。问题是,客户端如何从备用方案中恢复并再次使用主URL?因为现在,当客户端切换到辅助URL后,即使主URL再次可用,它也不会使用主URL。
客户端部分的代码如下:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(GatewayPort.class);
factory.setAddress(this.configFile.getPrimaryURL());

FailoverFeature feature = new FailoverFeature();
SequentialStrategy strategy = new SequentialStrategy();
List<String> addList = new ArrayList<String>();
addList.add(this.configFile.getSecondaryURL());
strategy.setAlternateAddresses(addList);
feature.setStrategy(strategy);

List<AbstractFeature> features = new ArrayList<AbstractFeature>();
features.add(feature);
factory.setFeatures(features);

this.serviceSoap = (GatewayPort)factory.create();

Client client = ClientProxy.getClient(this.serviceSoap);
if (client != null)
{
    HTTPConduit conduit = (HTTPConduit)client.getConduit();
    HTTPClientPolicy policy = new HTTPClientPolicy();
    policy.setConnectionTimeout(this.configFile.getTimeout());
    policy.setReceiveTimeout(this.configFile.getTimeout());
    conduit.setClient(policy);
}
2个回答

4

你可以将主要URL添加到备用地址列表中,而不是将其设置为JaxWsProxyFactoryBean。这样,由于使用了SequentialStrategy,每次服务调用时都会首先检查主要URL,如果失败,则尝试使用次要URL。


最后选择了另一种方法:自定义机制来发送数据到辅助URL。类似这样的操作:尝试两次将数据发送到第一个URL,如果失败则发送到第二个URL。(由于URL供应商的业务模型变化,才加入了这种方法) - Adrian Moldovan

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接