1

在重新启动托管 Web 服务的服务器时,我正在尝试为 Web 服务客户端实施故障转移。我尝试实现下面的代码,效果很好,但有两个问题:

  1. 第一次发生“失败”时,客户端将切换到下一个备用地址,但实际上不会完成 Web 服务调用。
  2. 当主服务器恢复时,客户端不会切换回使用该服务器。相反,它将继续使用它当前使用的任何服务器。

这是代码:

<jaxws:client id="someService"
        serviceClass="com.foo.bar.webservice.service.SomeService"
        address="https://myserver.server.net/webservices/cxf/SomeService" 
        username="myuser"
        password="mypassword">

    <jaxws:features>
        <clustering:failover>
            <clustering:strategy>
                <bean class="org.apache.cxf.clustering.SequentialStrategy">
                    <property name="alternateAddresses">
                        <list>
                            <value>otherserver/webservices/cxf/SomeService</value>
                            <value>thirdserver/webservices/cxf/SomeService</value>
                        </list>
                     </property>
                </bean>
            </clustering:strategy>
        </clustering:failover>
    </jaxws:features>
</jaxws:client>

有任何想法吗?

4

2 回答 2

1

我建议您使用像 Apache httpd 这样的 Web 服务器来在应用程序服务器集群的节点之间进行负载平衡。然后集群和故障转移不是您的应用程序必须管理的事情。

于 2013-08-08T17:16:18.737 回答
1

您可能想尝试具有您需要的替代 CXF 故障转移功能(故障回复能力) https://github.com/jaceko/cxf-circuit-switcher

于 2013-11-07T11:45:36.720 回答