2010-03-23 1 views
4

네임 스페이스가 "http://a.mydomain"인 WSDL에서 JAXWS-RI wsimport.bat를 사용하여 JAX-WS 클라이언트 (프록시 API)를 생성했습니다. 네임 스페이스가 "http://b.mydomain"인 서비스에 대해 동일한 생성 된 프록시를 다시 사용하고 싶지만 targetnamespace "http://a.mydomain"이 생성 된 클래스 전체에서 harcoded입니다.생성 된 클라이언트에서 동적 네임 스페이스를 지원하는 JAX-WS 구현이 있습니까?

누구나 JAXWS-RI 또는 ​​다른 JAXWS 구현을 사용하여이 문제에 대한 좋은 해결책을 알고 있습니까? 새 WSDL/네임 스페이스를 사용하여 프록시 클래스를 다시 생성하지 못하게하고 싶습니다.

답변 해 주셔서 감사합니다.

답변

0

JAX-WS RI이 같은 생성자를 생성하지 : 런타임 중에 네임 스페이스를 지정 (또는 예를 들어, PROD 또는 TEST를 들어, 다른 WSDL 위치를 사용) 수의 QName 요소에서

public SomeWebServiceEndpoint(URL wsdlLocation, QName serviceName) 

합니다.

따라서 웹 서비스를 새로운 클래스로 서브 클래스 화하거나 다른 래퍼를 사용하여 호출 할 수 있습니다.

1

단계는 다음과 같습니다

  1. 당신이 WSDL 위치, 서비스 이름 및 서비스의 이름 공간 URL을 알 필요가있는 위해 Service.create 방법 을 사용하여 서비스의 인스턴스를 만듭니다.
    예 : URL wsdlLocation = 새 URL ("http://example.org/my.wsdl"); QName serviceName = 새 QName ("http://example.org/sample", "MyService"); 서비스 s = Service.create (wsdlLocation, serviceName);

  2. Service.getPort() 메소드를 사용하여 서비스 프록시 (연결을위한 서비스 포트)를 가져옵니다. 이 경우 엔드 포인트 implemenattion 클래스 이름을 알아야합니다.
    예 : MyService port = s.getPort (MyService.class);

이제 프록시를 통해 메서드를 호출 할 수 있습니다. 요구 사항에 따라 이름 공간 URL을 변경하십시오.