public class FailoverTargetSelector extends AbstractConduitSelector
Modifier and Type | Class and Description |
---|---|
protected class |
FailoverTargetSelector.InvocationContext
Records the context of an invocation.
|
protected static class |
FailoverTargetSelector.InvocationKey
Used to wrap an Exchange for usage as a Map key.
|
Modifier and Type | Field and Description |
---|---|
protected FailoverStrategy |
failoverStrategy |
protected ConcurrentHashMap<FailoverTargetSelector.InvocationKey,FailoverTargetSelector.InvocationContext> |
inProgress |
CONDUIT_COMPARE_FULL_URL, conduits, endpoint, KEEP_CONDUIT_ALIVE
Constructor and Description |
---|
FailoverTargetSelector()
Normal constructor.
|
FailoverTargetSelector(Conduit c)
Constructor, allowing a specific conduit to override normal selection.
|
FailoverTargetSelector(String clientBootstrapAddress) |
Modifier and Type | Method and Description |
---|---|
void |
complete(Exchange exchange)
Called on completion of the MEP for which the Conduit was required.
|
protected void |
doComplete(Exchange exchange) |
String |
getClientBootstrapAddress() |
protected long |
getDelayBetweenRetries()
Returns delay (in milliseconds) between retries
|
protected Endpoint |
getFailoverTarget(Exchange exchange,
FailoverTargetSelector.InvocationContext invocation)
Get the failover target endpoint, if a suitable one is available.
|
protected FailoverTargetSelector.InvocationContext |
getInvocationContext(FailoverTargetSelector.InvocationKey key) |
protected FailoverTargetSelector.InvocationKey |
getInvocationKey(Exchange e) |
protected Logger |
getLogger() |
FailoverStrategy |
getStrategy() |
boolean |
isSupportNotAvailableErrorsOnly() |
protected void |
onFailure(FailoverTargetSelector.InvocationContext context,
Exception ex) |
protected void |
onSuccess(FailoverTargetSelector.InvocationContext context) |
protected void |
overrideAddressProperty(Map<String,Object> context)
Override the ENDPOINT_ADDRESS property in the request context
|
protected void |
overrideAddressProperty(Map<String,Object> context,
String address) |
protected boolean |
performFailover(Exchange exchange,
FailoverTargetSelector.InvocationContext invocation) |
void |
prepare(Message message)
Called prior to the interceptor chain being traversed.
|
protected boolean |
replaceEndpointAddressPropertyIfNeeded(Message message,
String endpointAddress,
Conduit cond) |
protected boolean |
requiresFailover(Exchange exchange,
Exception ex)
Check if the exchange is suitable for a failover.
|
Conduit |
selectConduit(Message message)
Called when a Conduit is actually required.
|
void |
setClientBootstrapAddress(String clientBootstrapAddress) |
protected void |
setOriginalEndpoint(FailoverTargetSelector.InvocationContext invocation) |
void |
setStrategy(FailoverStrategy strategy) |
void |
setSupportNotAvailableErrorsOnly(boolean support) |
protected void |
setupExchangeExceptionProperties(Exchange ex) |
protected List<String> |
updateContextAlternatives(Exchange exchange,
FailoverTargetSelector.InvocationContext invocation)
Fetches and updates the alternative address or/and alternative endpoints
(depending on the strategy) for current invocation context.
|
close, createConduit, findCompatibleConduit, getEndpoint, getSelectedConduit, removeConduit, setEndpoint
protected ConcurrentHashMap<FailoverTargetSelector.InvocationKey,FailoverTargetSelector.InvocationContext> inProgress
protected FailoverStrategy failoverStrategy
public FailoverTargetSelector()
public FailoverTargetSelector(String clientBootstrapAddress)
public FailoverTargetSelector(Conduit c)
c
- specific conduitpublic void prepare(Message message)
message
- the current Messageprotected void setupExchangeExceptionProperties(Exchange ex)
public Conduit selectConduit(Message message)
message
- protected FailoverTargetSelector.InvocationContext getInvocationContext(FailoverTargetSelector.InvocationKey key)
public void complete(Exchange exchange)
complete
in interface ConduitSelector
complete
in class AbstractConduitSelector
exchange
- represents the completed MEPprotected void doComplete(Exchange exchange)
protected void setOriginalEndpoint(FailoverTargetSelector.InvocationContext invocation)
protected boolean performFailover(Exchange exchange, FailoverTargetSelector.InvocationContext invocation)
protected void onSuccess(FailoverTargetSelector.InvocationContext context)
protected void onFailure(FailoverTargetSelector.InvocationContext context, Exception ex)
public void setStrategy(FailoverStrategy strategy)
strategy
- the FailoverStrategy to usepublic FailoverStrategy getStrategy()
protected Logger getLogger()
getLogger
in class AbstractConduitSelector
protected long getDelayBetweenRetries()
protected boolean requiresFailover(Exchange exchange, Exception ex)
exchange
- the current Exchangeprotected Endpoint getFailoverTarget(Exchange exchange, FailoverTargetSelector.InvocationContext invocation)
exchange
- the current Exchangeinvocation
- the current InvocationContextprotected List<String> updateContextAlternatives(Exchange exchange, FailoverTargetSelector.InvocationContext invocation)
exchange
- the current Exchangeinvocation
- the current InvocationContextprotected void overrideAddressProperty(Map<String,Object> context)
context
- the request contextprotected void overrideAddressProperty(Map<String,Object> context, String address)
protected boolean replaceEndpointAddressPropertyIfNeeded(Message message, String endpointAddress, Conduit cond)
replaceEndpointAddressPropertyIfNeeded
in class AbstractConduitSelector
public boolean isSupportNotAvailableErrorsOnly()
public void setSupportNotAvailableErrorsOnly(boolean support)
public String getClientBootstrapAddress()
public void setClientBootstrapAddress(String clientBootstrapAddress)
protected FailoverTargetSelector.InvocationKey getInvocationKey(Exchange e)
Apache CXF