중개 프로그래밍을 위한 코드 작성 팁
중개 코드 작성 시 도움이 되는 프로그래밍 힌트
- 전달 라우팅 경로에서 루프가 발생하지 않도록 주의하십시오. 예를 들어, 현재 대상과 동일한 경로에 대상을 설정하는 경우 메시지는 계속 순환되며 라우팅 경로는 매번 현재 대상으로 재설정됩니다. 중개 프레임워크는 라우팅 경로에서 루프를 확인하지 않습니다.
- 가능한 경우 정적 필드를 사용하지 마십시오. 단일 중개는 다중 메시지를 동시에 처리하기 위해 배치될 수 있습니다.
- 메시지 컨텍스트 또는 메시지 컨텐츠에서 계산된 값은 캐싱하지 마십시오. 이런 값은 메시지별로 변경될 수 있습니다. 예외는 성능을 이유로 중개 핸들러 특성에서 전적으로 파생된 예외 캐싱입니다.
- 중개 프로그래밍은 EJB를 프로그래밍할 때 동일한 제한사항에 따라 변경됩니다. 제한사항에 대한 자세한 정보는 EJB 1.1 스펙의 18.1.2 절을 참조하십시오.
- 중개에 적절한 트랜잭션 제어 레벨을 선택하십시오. 예를 들어, 메시지 내의 필드에서 운영되는 중개는 트랜잭션 제어를 내포하지 않습니다. 다르게 말해서 중개가 데이터베이스 필드를 업데이트하면 트랜잭션 제어가 필요하며 관리자에게 중개 정의에 UseGlobalTransaction 플래그를 설정하도록 경고해야 합니다. 이 플래그는 False를 기본값으로 사용합니다.
- 형식 관리에 특히 적용되는 힌트:
- 중개 기능이 메시지에서 운영된 후에 메시지가 예상된 형식을 준수하는지 확인하는 것은 좋은 방법입니다. SIMessage 인터페이스에서 isWellFormed 메소드를 사용하여 메시지 특성의 모든 값이 직렬화 가능한지 및 메시지의 데이터 그래프가 메시지 형식을 준수하는지 확인해야 합니다.
- 메시지를 처리하는 방법에 따라 기본 형식을 사용하지 않고 사용자의 요구사항에 맞는 형식을 지정할 수 있습니다. 예를 들어, SOAP 메시지를 바이트 문자열로 처리하려는 경우 SIMessage 인터페이스에서 getNewDataGraph 메소드를 사용하고 JMS/bytes 형식을 지정하십시오. getNewDataGraph는 SIMessage 페이로드 컨텐츠 사본을 형식 필드에서 지정한 트리 표시 형식으로 포함하는 SDO 데이터 그래프를 리턴하며 이 예에서는 바이트 문자열입니다.
- 중개는 예상하지 못한 형식으로 메시지를 거의 제대로 처리하지 못하기 때문에 중개 코드에서 메시지 형식을 확인하는 것은 좋은 방법입니다. getFormat 메소드를 SIMessage 인터페이스에서 사용하십시오.
- 중개에서 지원되는 SDO 버전은 버전 1만 지원됩니다.
- 메시지에 대한 SDO 사용자 인터페이스의 제한사항으로 인해
메시지 액세스 메소드는 'throws'절을 포함하지 않습니다. 그 결과, 구문 오류 때문에
액세스 메소드로 처리되는 예외는 확인되지 않은 예외입니다. 중개는
com.ibm.websphere.sib.exception 패키지에서 예외 클래스 SIMessageParseException을
확인하여 구문 예외를 예외 처리할 수 있습니다.
다음 예와 유사한 코드를 사용하십시오.
try { // Function involving SDO message access } catch (SIMessageParseException e) { // Look at the real cause of the runtime exception, and act on it. // It is likely to indicate a parse failure... Throwable cause = e.getCause(); }
참고: 중개가 SIMessageParseException을 예외 처리하지 않으면 메시지의 원래 버전은 예외 대상으로 전송됩니다. - 중개를 배치할 때 핸들러 및 핸들러 목록에 기억하기 좋은 설명 이름을 지정하십시오.
- 단일 대상에 대해 단일 중개를 배치하는 경우 관리 콘솔에서 중개 핸들러, 중개 핸들러 목록, 중개 오브젝트에 대해 정확하게 일치하는 동일한 이름을 사용하십시오.
- 성능 상의 이유로 중개가 대상을 통해서 전달되는 메시지의 필수 서브세트만 중개하도록 선택기 규칙을 지정하십시오.