{#include main fluid=true} {#style} .annotation { color: gray; font-style: italic; } span.larger-badge { font-size: 0.9em; } span.app-class { cursor:pointer; color:blue; text-decoration:underline; } {/style} {#script} $(document).ready(function(){ if (!ideKnown()) { return; } $(".class-candidate").each(function() { var className = $(this).text(); if (appClassLocation(className)) { $(this).addClass("app-class"); } }); $(".app-class").on("click", function() { openInIDE($(this).text()); }); }); {/script} {#title}Guarded Methods{/title} {#body} {#for ftOperation in info:ftOperations} {/for}
# Bean Class Method Fault Tolerance Strategies
{ftOperation_count} {#if ftOperation.beanClass.name.length > 70}{ftOperation.beanClass.name.substring(0,70)}...{#else}{ftOperation.beanClass.name}{/if} {ftOperation.methodDescriptor.name}()
    {#if ftOperation.applyFaultTolerance}
  • @ApplyFaultTolerance("{ftOperation.applyFaultTolerance.value}")
  • {/if} {#if ftOperation.asynchronous}
  • @Asynchronous
  • {/if} {#if ftOperation.blocking}
  • @Blocking
  • {/if} {#if ftOperation.nonBlocking}
  • @NonBlocking
  • {/if} {#if ftOperation.bulkhead}
  • @Bulkhead(value = {ftOperation.bulkhead.value}, waitingTaskQueue = {ftOperation.bulkhead.waitingTaskQueue})
  • {/if} {#if ftOperation.circuitBreaker}
  • @CircuitBreaker(delay = {ftOperation.circuitBreaker.delay} {ftOperation.circuitBreaker.delayUnit.name}, requestVolumeThreshold = {ftOperation.circuitBreaker.requestVolumeThreshold}, failureRatio = {ftOperation.circuitBreaker.failureRatio}, successThreshold = {ftOperation.circuitBreaker.successThreshold}, failOn = [{#each ftOperation.circuitBreaker.failOn}{it.name}{#if it_hasNext}, {/if}{/each}], skipOn = [{#each ftOperation.circuitBreaker.skipOn}{it.name}{#if it_hasNext}, {/if}{/each}]) {#if ftOperation.circuitBreakerName}
    • @CircuitBreakerName("{ftOperation.circuitBreakerName.value}")
    {/if}
  • {/if} {#if ftOperation.fallback}
  • @Fallback(value = {ftOperation.fallback.value.name}, fallbackMethod = "{ftOperation.fallback.fallbackMethod}", applyOn = [{#each ftOperation.fallback.applyOn}{it.name}{#if it_hasNext}, {/if}{/each}], skipOn = [{#each ftOperation.fallback.skipOn}{it.name}{#if it_hasNext}, {/if}{/each}])
  • {/if} {#if ftOperation.retry}
  • @Retry(maxRetries = {ftOperation.retry.maxRetries}, delay = {ftOperation.retry.delay} {ftOperation.retry.delayUnit.name}, maxDuration = {ftOperation.retry.maxDuration} {ftOperation.retry.durationUnit.name}, jitter = {ftOperation.retry.jitter} {ftOperation.retry.jitterDelayUnit.name}, retryOn = [{#each ftOperation.retry.retryOn}{it.name}{#if it_hasNext}, {/if}{/each}], abortOn = [{#each ftOperation.retry.abortOn}{it.name}{#if it_hasNext}, {/if}{/each}]) {#if ftOperation.exponentialBackoff || ftOperation.fibonacciBackoff || ftOperation.customBackoff}
      {#if ftOperation.exponentialBackoff}
    • @ExponentialBackoff(factor = {ftOperation.exponentialBackoff.factor}, maxDelay = {ftOperation.exponentialBackoff.maxDelay} {ftOperation.exponentialBackoff.maxDelayUnit.name})
    • {/if} {#if ftOperation.fibonacciBackoff}
    • @FibonacciBackoff(maxDelay = {ftOperation.fibonacciBackoff.maxDelay} {ftOperation.fibonacciBackoff.maxDelayUnit.name})
    • {/if} {#if ftOperation.customBackoff}
    • @CustomBackoff({ftOperation.customBackoff.value.name})
    • {/if}
    {/if}
  • {/if} {#if ftOperation.timeout}
  • @Timeout({ftOperation.timeout.value} {ftOperation.timeout.unit.name})
  • {/if}
{/body} {/include}