SDO 메시지 액세스를 위한 JAX-RPC 핸들러 구현
JAX-RPC 핸들러는 요청 및 응답 메시지 처리 중에 호출됩니다. SOAP 프로토콜을 사용하여 교환되는 메시지의 경우 각 JAX-RPC 핸들러는 SOAP 특정 MessageContext 오브젝트에 전달됩니다. 기타 프로토콜의 경우 IBM 웹 서비스 런타임 환경은 메시지의 SDO(Service Data Object) 보기를 제공하는 MessageContext 오브젝트를 전달합니다. SDO(Service Data Objects)는 애플리케이션이 여러 데이터 소스의 데이터를 일관된 방법으로 데이터 그래프로 처리할 수 있게 하는 개방형 표준입니다.
JAX-RPC 핸들러가 메시지 컨텍스트 특성만 처리하는 경우 지정되는 MessageContext의 특정 서브클래스를 인식하지 않아도 됩니다. 컨텍스트 특성 메소드는 MessageContext 인터페이스 자체에서 정의되기 때문입니다. 핸들러가 메시지 내에 포함된 정보를 처리해야 하는 경우 필요한 서브클래스에 대한 작업을 위해 이 핸들러는 코드화되어야 합니다. JAX-RPC 핸들러는 MessageContext가 필수 서브클래스의 인스턴스인지 여부를 테스트해야 합니다.
- JAX-RPC 클라이언트 또는 서비스 통합 버스로부터의 아웃바운드 호출은 EJB 바인딩을 사용하여 서비스를 호출합니다.
- JAX-RPC 클라이언트는 non-bound WSDL에 대해 개발되어 서비스 통합 버스의 대상을 다시 대상으로 합니다.
SDOMessageContext 클래스는 처리 중인 메시지를 나타내는 com.ibm.websphere.sdo.SDOMessage 인스턴스를 가져오고 설정하는 메소드를 제공합니다. SDOMessage에는 메시지 컨텐츠를 SDO DataObjects로 보유하는 SDO DataGraph 오브젝트에 액세스할 수 있는 메소드가 있습니다.
JAX-RPC 핸들러는 SDO DataGraph 컨텐츠를 수정할 수 있지만 메시지의 형식 또는 스키마는 변경할 수 없습니다.
다음 예제는 JAX-RPC 핸들러 handleRequest 메소드에서 MessageContext로부터 SDO DataGraph에 액세스하는 데 사용할 수 있는 코드를 보여줍니다.
public boolean handleRequest(MessageContext messageContext) {
// Convert the MessageContext into an SDOMessageContext
if( messageContext instanceof SDOMessageContext) {
SDOMessageContext smc = (SDOMessageContext)messageContext;
// Retrieve the message
SDOMessage message = smc.getSDOMessage();
// Get the root object in the SDO DataGraph
DataGraph graph = message.getDataGraph();
DataObject content = graph.getRootObject();
// Now do something with the message content.....
}
return true;
}