21.6. WS-RM 지속성 구성
21.6.1. 개요
이 장에서 이미 설명한 Apache CXF WS-RM 기능은 네트워크 오류와 같은 경우 안정성을 제공합니다. WS-RM 지속성은 RM 소스 또는 RM 대상 충돌과 같은 다른 유형의 오류에서 안정성을 제공합니다.
WS-RM 지속성은 다양한 RM 엔드포인트의 상태를 영구 스토리지에 저장해야 합니다. 이렇게 하면 끝점이 재탄권될 때 메시지를 계속 보내고 수신할 수 있습니다.
Apache CXF는 구성 파일에서 WS-RM 지속성을 활성화합니다. 기본 WS-RM 지속성 저장소는 JDBC 기반입니다. 편의를 위해 Apache CXF에는 즉시 배포할 수 있는 Derby가 포함되어 있습니다. 또한 영구 저장소는 Java API를 사용하여 노출됩니다. 고유한 지속성 메커니즘을 구현하기 위해 기본 DB로 이 API를 사용하여 하나를 구현할 수 있습니다.
WS-RM 지속성은 단방향 호출에서만 지원되며 기본적으로 비활성화되어 있습니다.
21.6.2. 작동 방식
Apache CXF WS-RM 지속성은 다음과 같이 작동합니다.
- RM 소스 엔드포인트에서 발신 메시지는 전송 전에 유지됩니다. 승인이 수신되면 영구 저장소에서 제거됩니다.
- 충돌로 복구한 후 모든 메시지가 승인될 때까지 지속된 메시지를 복구하고 다시 전송을 수행합니다. 이 시점에서 RM 시퀀스가 닫힙니다.
- RM 대상 끝점에서는 수신 메시지가 유지되고 성공적인 저장소에 승인이 전송됩니다. 메시지가 성공적으로 디스패치되면 영구 저장소에서 제거됩니다.
- 충돌에서 복구한 후 지속 가능한 메시지를 복구하고 이를 전송합니다. 또한 RM 시퀀스를 새 메시지가 수락, 승인 및 전달되는 상태로 가져옵니다.
21.6.3. WS-persistence 활성화
WS-RM 지속성을 활성화하려면 WS-RM의 영구 저장소를 구현하는 오브젝트를 지정해야 합니다. 직접 개발하거나 Apache CXF와 함께 제공되는 JDBC 기반 저장소를 사용할 수 있습니다.
예 21.14. “기본 WS-RM 지속성 저장소에 대한 구성” 에 표시된 구성은 Apache CXF와 함께 제공되는 JDBC 기반 저장소를 활성화합니다.
예 21.14. 기본 WS-RM 지속성 저장소에 대한 구성
<bean id="RMTxStore" class="org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore"/> <wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager"> <property name="store" ref="RMTxStore"/> </wsrm-mgr:rmManager>
21.6.4. WS-persistence 구성
Apache CXF와 함께 제공되는 JDBC 기반 저장소는 표 21.4. “JDBC 저장소 속성” 에 표시된 속성을 지원합니다.
특성 이름 | 유형 | 기본 설정 |
---|---|---|
|
| |
| null | |
| null | |
| jdbc:derby:rmdb;create=true |
예 21.15. “WS-RM 지속성을 위한 JDBC 저장소 구성” 에 표시된 구성은 Apache CXF와 함께 제공되는 JDBC 기반 저장소를 활성화하며 driverClassName
및 url
을 기본값이 아닌 값으로 설정합니다.
예 21.15. WS-RM 지속성을 위한 JDBC 저장소 구성
<bean id="RMTxStore" class="org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore"> <property name="driverClassName" value="com.acme.jdbc.Driver"/> <property name="url" value="jdbc:acme:rmdb;create=true"/> </bean>