2013-08-07 2 views
1

Я пытаюсь реализовать переход на другой ресурс для клиента веб-службы в моменты, когда сервер, на котором размещена веб-служба, перезапускается. Я попытался реализовать следующий код, который работал очень хорошо, но с двумя проблемами:Проблемы с отказом CXF

  1. В первый раз «провал» произошло, то клиент будет перейти к следующему альтернативному адресу, но не на самом деле завершить вызов веб-службы ,
  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> 

Любые идеи?

ответ

1

Я бы предложил вам использовать веб-сервер, такой как Apache httpd, для загрузки баланса между узлами кластера серверов приложений. Тогда кластеризация и сбой не являются чем-то, что ваше приложение должно управлять.

+1

Хотя я согласен, что переход на другой ресурс за счет балансировки нагрузки, вероятно, самым чистым и самым простым решением, не будет для меня все работает. Этот вызов службы инициируется приемом JMS-сообщения, и я не могу позволить отказаться от сообщения, даже если все потенциальные узлы недоступны. –

1

Вы можете попробовать альтернативную CXF функцию отказоустойчивый, которая имеет то, что вам нужно (способность Failback) https://github.com/jaceko/cxf-circuit-switcher

+0

На бумаге это именно то, о чем я прошу. Я уже реализовал пользовательское/ручное решение, но я посмотрю, смогу ли я в какой-то момент вернуться и попробовать это. –