Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

unmigrated-inline-wiki-markup
{span:style=font-size:2em;font-weight:bold} Failover and Load Distributor Features {span}

Table of Contents

Failover

The CXF Failover feature allows to configure CXF frontend clients to retry a call when the target endpoint becomes unavailable.
A number of retry strategies available: a client can iterate sequentially over the alternative addresses or chose them randomly.
Every strategy can be configured to do a delay between selecting the addresses.

Code Block
xml
xml


{toc}

h1. Failover 

The CXF Failover feature allows to configure CXF frontend clients to retry a call when the target endpoint becomes unavailable.
A number of retry strategies available: a client can iterate sequentially over the alternative addresses or chose them randomly.  
Every strategy can be configured to do a delay between selecting the addresses.

{code:xml}

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:clustering="http://cxf.apache.org/clustering"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
    
    <util:list id="addressList">
        <value>http://localhost:${testutil.ports.Server.1}/services1</value>
        <value>http://localhost:${testutil.ports.Server.2}/services2</value>
        <value>http://localhost:${testutil.ports.Server.3}/services3</value>
    </util:list>

    <bean id="SequentialAddresses" class="org.apache.cxf.clustering.SequentialStrategy">
        <property name="alternateAddresses">
            <ref bean="addressList"/>
        </property>
        <!-- delay a retry for 1/10 of a second -->
        <property name="delayBetweenRetries" value="100"/>
    </bean>

    <bean id="RandomAddresses" class="org.apache.cxf.clustering.RandomStrategy">
        <property name="alternateAddresses">
            <ref bean="addressList"/>
        </property>
    </bean>

    <!-- other jaxws:client attributes and elements are omitted for brewity -->
    
    <jaxws:client id="clientWithSeqFailoverSupport" address="http://localhost:8080/services">
       <jaxws:features>
           <clustering:failover>
                <clustering:strategy>
                    <ref bean="SequentialAddresses"/>
                </clustering:strategy>
            </clustering:failover>
       </jaxws:features>
    </jaxws:client>

    <!-- other jaxws:client attributes and elements are omitted for brewity -->

    <jaxws:client id="clientWithRandomFailoverSupport" address="http://localhost:8080/initialAddress">
       <jaxws:features>
           <clustering:failover>
                <clustering:strategy>
                    <ref bean="RandomAddresses"/>
                </clustering:strategy>
            </clustering:failover>
       </jaxws:features>
    </jaxws:client>

</beans>
{code}

Note,

...

org.apache.cxf.clustering.RetryStrategy

...

can

...

be

...

used

...

to

...

retry

...

the

...

same,

...

last

...

address

...

for

...

a

...

limited

...

number

...

of

...

times,

...

before

...

switching

...

to

...

the

...

next

...

address.

...

Use

...

RetryStrategy

...

'maxNumberOfRetries'

...

property.

...

RetryStrategy

...

currently

...

uses

...

a

...

sequential

...

algorithm

...

for

...

selecting

...

the

...

addresses.

Load Distribution

Load Distributor Feature is a Failover feature which can allow the clients to iterate over alternative addresses on every new call, irrespectively of whether the last call has reached its target or not. It can help with the controlling the traffic originating from CXF clients at individual servers.

Code Block
xml
xml
 

h1. Load Distribution

Load Distributor Feature is a Failover feature which can allow the clients to iterate over alternative addresses on every new call, irrespectively of whether the last call has reached its target or not. It can help with the controlling the traffic originating from CXF clients at individual servers. 

{code:xml}

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:clustering="http://cxf.apache.org/clustering"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>     

    <util:list id="addressList">
        <value>http://localhost:${testutil.ports.Server.1}/services1</value>
        <value>http://localhost:${testutil.ports.Server.2}/services2</value>
        <value>http://localhost:${testutil.ports.Server.3}/services3</value>
    </util:list>

    <bean id="SequentialAddresses" class="org.apache.cxf.clustering.SequentialStrategy">
        <property name="alternateAddresses">
            <ref bean="addressList"/>
        </property>
    </bean>

    <!-- other jaxws:client attributes and elements are omitted for brewity -->
    
    <jaxws:client id="clientWithLoadDistributor" address="http://localhost:8080/services">
       <jaxws:features>
           <clustering:loadDistributor>
                <clustering:strategy>
                    <ref bean="SequentialAddresses"/>
                </clustering:strategy>
            </clustering:loadDistributor>
       </jaxws:features>
    </jaxws:client>
</beans>
{code}

h1. Configuring 

Configuring JAX-RS

...

clients

...

JAX-RS

...

clients

...

are

...

configured

...

exactly

...

as

...

JAX-WS

...

clients

...

are,

...

please

...

see

...

this

...

page

...

for

...

more

...

info.

...