43장. 처리기 작성
초록
Cryostat-WS는 메시지 처리 모듈을 애플리케이션에 추가하기 위한 유연한 플러그인 프레임워크를 제공합니다. 처리기라고 하는 이러한 모듈은 애플리케이션 수준 코드와 독립적이며 낮은 수준의 메시지 처리 기능을 제공할 수 있습니다.
43.1. 처리기: 소개
43.1.1. 개요
서비스 프록시가 서비스에서 작업을 호출하면 작업의 매개 변수가 메시지로 빌드되고 유선에 배치되는 Apache CXF로 전달됩니다. 서비스에서 메시지를 수신하면 Apache CXF에서 메시지를 읽고 메시지를 재구성한 다음 작업 매개 변수를 작업 코드로 전달합니다. 애플리케이션 코드가 요청 처리를 완료하면 응답 메시지는 요청을 시작한 서비스 프록시로 이동하는 유사한 이벤트 체인을 거칩니다. 이는 그림 43.1. “메시지 교환 경로” 에 표시됩니다.
그림 43.1. 메시지 교환 경로
Cryostat-WS는 애플리케이션 수준 코드와 네트워크 간에 메시지 데이터를 조작하기 위한 메커니즘을 정의합니다. 예를 들어, 오픈 네트워크를 통해 전달되는 메시지 데이터가 독점 암호화 메커니즘을 사용하여 암호화되도록 할 수 있습니다. 데이터를 암호화하고 해독하는 경우, Cryostat-WS 핸들러를 작성할 수 있습니다. 그런 다음 모든 클라이언트 및 서버의 메시지 처리 체인에 처리기를 삽입할 수 있습니다.
그림 43.2. “처리기를 사용한 메시지 교환 경로” 에 표시된 대로 처리기는 애플리케이션 수준 코드와 메시지를 네트워크에 배치하는 전송 코드 간에 통과하는 체인에 배치됩니다.
그림 43.2. 처리기를 사용한 메시지 교환 경로
43.1.2. 처리기 유형
Cryostat-WS 사양은 다음 두 가지 기본 처리기 유형을 정의합니다.
논리 처리기 논리 처리기는 메시지 페이로드와 메시지 컨텍스트에 저장된 속성을 처리할 수 있습니다. 예를 들어 애플리케이션에서 순수 XML 메시지를 사용하는 경우 논리 처리기는 전체 메시지에 액세스할 수 있습니다. 애플리케이션에서 Cryostat 메시지를 사용하는 경우 논리 처리기는 Cryostat 본문의 콘텐츠에 액세스할 수 있습니다. 메시지 컨텍스트에 배치된 경우를 제외하고 Cryostat 헤더 또는 모든 첨부 파일에 액세스할 수 없습니다.
논리 처리기는 처리기 체인의 애플리케이션 코드에 가장 근접하게 배치됩니다. 즉, 메시지가 애플리케이션 코드에서 전송으로 전달될 때 먼저 실행됩니다. 네트워크에서 메시지를 수신하고 애플리케이션 코드로 다시 전달되면 논리 처리기가 마지막으로 실행됩니다.
프로토콜 처리기 프로토콜 처리기는 네트워크에서 수신된 전체 메시지와 메시지 컨텍스트에 저장된 속성을 처리할 수 있습니다. 예를 들어 애플리케이션에서 Cryostat 메시지를 사용하는 경우 프로토콜 처리기는 Cryostat 본문, Cryostat 헤더 및 모든 첨부 파일의 콘텐츠에 액세스할 수 있습니다.
프로토콜 처리기는 처리기 체인의 전송에 가장 근접하게 배치됩니다. 즉, 네트워크에서 메시지를 수신할 때 먼저 실행됩니다. 메시지가 애플리케이션 코드에서 네트워크로 전송되면 프로토콜 처리기가 마지막으로 실행됩니다.
참고Apache CXF에서 지원하는 유일한 프로토콜 처리기는 Cryostat에 따라 다릅니다.
43.1.3. 처리기 구현
두 처리기 유형의 차이점은 매우 미묘하며 공통 기본 인터페이스를 공유합니다. 논리 처리기와 프로토콜 처리기는 일반적인 부모로 인해 다음을 포함하여 구현해야 하는 여러 메서드를 공유합니다.
논리 처리기의 구현과 프로토콜 처리기 구현의 차이점은 다음과 같습니다.
구현되는 특정 인터페이스
모든 처리기는 Handler 인터페이스에서 파생되는 인터페이스를 구현합니다. 논리 처리기는 LogicalHandler 인터페이스를 구현합니다. 프로토콜 처리기는 Handler 인터페이스의 프로토콜별 확장을 구현합니다. 예를 들어 Cryostat 처리기는 CryostatHandler 인터페이스를 구현합니다.
처리기에서 사용할 수 있는 정보의 양
프로토콜 처리기는 메시지의 내용과 메시지 콘텐츠와 함께 패키지된 모든 프로토콜 관련 정보에 액세스할 수 있습니다. 논리 처리기는 메시지의 콘텐츠에만 액세스할 수 있습니다. 논리 처리기에는 프로토콜 세부 정보가 없습니다.
43.1.4. 애플리케이션에 처리기 추가
애플리케이션에 처리기를 추가하려면 다음을 수행해야 합니다.
- 처리기를 서비스 공급자, 소비자 또는 둘 다에서 사용할지 여부를 확인합니다.
- 작업에 가장 적합한 핸들러 유형을 결정합니다.
적절한 인터페이스를 구현합니다.
논리 처리기를 구현하려면 43.2절. “논리 처리기 구현” 을 참조하십시오.
프로토콜 처리기를 구현하려면 43.4절. “프로토콜 처리기 구현” 에서 참조하십시오.
- 처리기를 사용하도록 끝점을 구성합니다. 43.10절. “Handlers를 사용하도록 끝점 구성”을 참조하십시오.