3

cxf JAX-WS クライアントがあります。フェイルオーバー戦略を追加しました。問題は、クライアントがバックアップ ソリューションから回復し、プライマリ 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);
}
4

2 に答える 2

4

JaxWsProxyFactoryBean に設定する代わりに、プライマリ URL を代替アドレス リストに追加できます。このように、SequentialStrategy を使用しているため、サービス呼び出しごとに最初にプライマリ URL がチェックされ、失敗した場合はセカンダリ URL が試行されます。

于 2012-10-17T04:07:58.093 に答える
0

フェイルバックを使用して代替の CXF フェイルオーバー機能を試すこともできます。

https://github.com/jaceko/cxf-circuit-switcher

于 2013-11-07T11:41:19.243 に答える