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

내가로드 밸런싱을 통해 장애 조치를 동의하지만 아마도 가장 깨끗한 쉬운 솔루션입니다 (장애 복구 능력을) 필요가있는 다른 CXF 장애 복구 기능을 시도 할 수 있습니다, 그것은하지 않습니다 나를 위해 일한다. 이 서비스 호출은 JMS 메시지 수신에 의해 트리거되며 모든 잠재적 노드를 사용할 수없는 경우에도 메시지를 삭제할 여유가 없습니다. –

1
+0

종이에 이것은 정확하게 내가 원하는 것입니다. 이미 custom/manual 솔루션을 구현했지만 어떤 시점에서 다시 돌아가서이 문제를 해결할 수 있는지 알 수 있습니다. –