2012년 6월 14일 목요일

JAX-RPC 와 JAX-WS 동시에 사용하기

동시에 여러개의 WebService를 호출하는 경우, 또한 서비스간 데이터를 주고 받아야 하는 겨우 Java로 메소드 호출 하듯이 A 서비스에서 가져온 결과를 B 서비스의 호출 인자로 넘겨 주고 싶은 경우가 있다.

아마도 BPM에서 backend의 여러 시스템에서 제공하는 서비스를 조합하고자 하는 경우 이런 일들이 발생할 텐데, IBM BPM 에서 테스트 해본 결과
  • JAX-RPC 는 package 구조로 xsd의 namespace를 생성한다. 
  • JAX-WS는 서비스의 package 구조로 xsd의 namespace를 생성한다. 
  • JAX-WS는 parameter를 wrapping한 데이터 구조를 더 생성한다. 
 namespace가 일치 하지 않으면 xsd로부터 만들어지는 Business Object는 호환이 되지 않는다.

따라서 JAX-WS로 생성할 parameter object에 annotation으로 namespace를 지정해 주면 동일한 namespace의 xsd를 생성할 수 있다.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Customer", namespace = "http://bo.demo.bizhub.ibm.com")
public class Customer {

    long customerId;
...


댓글 없음:

댓글 쓰기