2010-11-26 7 views
0

각 엔드 포인트 애플리케이션 (서버 및 클라이언트)에 공통된 웹 서비스 인터페이스가 있습니다. "동일한"wsdl을 위해 서버에 연결하지 않고 클라이언트 측에서 포트를 생성하려면 어떻게해야합니까? 메트로를 사용JAX-WS로 서비스 프록시를 동적으로 생성하는 방법

MagicProxyFactory proxy = MagicProxyFactory.newInstance(MyServiceInterface.class); 

/* then bind service address like that 
((BindingProvider)proxy).getRequestContext() 
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http address"); 
*/ 

MyServiceInterface port = (MyServiceInterface) proxy.getPort(); 

답변

0

:

내가 현재 무엇을이 의사 뭔가를 검색? 당신은 할 수 없습니다. 프록시를 만들려면 WSDL이 필요합니다. WSDL을 클라이언트와 번들 (선호)하거나 프록시 생성 중에 WSDL을 다운로드 할 수있는 URL을 사용하십시오.

2

단계는 다음과 같습니다

  1. 당신이 WSDL 위치, 서비스 이름 및 서비스의 이름 공간 URL을 알 필요가있는 위해 Service.create 방법 을 사용하여 서비스의 인스턴스를 만듭니다.
    예 :

    URL wsdlLocation = new 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);

이제 프록시를 통해 메서드를 호출 할 수 있습니다.

관련 문제