soap 2

SAAJ 클라이언트에 핸들러 등록하기.

SAAJ로 SOAPMessage를 생성하여 endPoint에 전송하는 코드가 있다. 이 코드에서 핸들러를 사용하려고 한다. 그러나 핸들러는 DII 타입의 클라이언트에서 등록하는 방법만 알고 있다. 여기저기 쑤셔본 결과, 딱히 등록한 위치는 못찾겠다. Handle 인터페이스의 모양새가 init 후 handleRequest, handleResponse 이므로 각각의 메서드를 그냥 호출하기로 했다. 특별한 이상없이 잘 작동하였으나, handleRequest의 파라미터가 MessageContext 이기 때문에 이 클래스의 인스턴스가 필요하다. SAAJ, JAXRPC 인터페이스로는 생성이 불가하고, AXIS에서 구현한 클래스(org.apache.axis.MessageContext)로 인스턴스를 생성할 수 있었다...

카테고리 없음 2007.01.04

AXIS에서 닫기태그(end-tag)가 사라질때

분명히 핸들러에서는 정상적인 메시지를 보냈음을 확인하고 return 했는데 SOAPMonitor를 보면 수십바이트의 데이터가 누락되어 닫기태그가 없다는 오류가 발생한다. 한참을 방황하다가 숫자놀이를 시작했는데, 누락된 데이터의 길이가 xml헤더의 길이와 일치하는 것이 아닌가? 그리하여 SOAPPart 객체에 setContent를 사용하는 방법에 문제가 있는 것이 아닌가를 확인하였고 원래 만들어두었던 DOMSource(Document)를 사용하던 방법을 사용하지 않고 StreamSource( InputStream )을 사용하여 Source를 만들었다. 그 결과 메지지가 누락되는 일은 발생하지 않았는데, 예상치 못하게 서버에서 정확한 응답을 해 주었다. 서버에는 변경된 소스를 적용하지 않았는데도 말이다. 일..