25.3. 서비스에 포트 추가
25.3.1. 개요
서비스에 대한 엔드포인트 정보는 wsdl:port
요소에 정의되어 있으며 Service
오브젝트는 WSDL 계약에 정의된 각 엔드포인트에 대해 프록시 인스턴스를 생성합니다.
개체를 만들 때 WSDL 계약을 지정하지 않으면 서비스 오브젝트에 서비스를 구현하는 끝점에 대한 정보가 없으므로 프록시 인스턴스를 생성할 수 없습니다. 이 경우, Service
addPort()
메서드를 사용하여 wsdl:port
요소를 나타내는 데 필요한 정보를 Service
오브젝트에 제공해야 합니다.
25.3.2. addPort() 메서드
Service
클래스는 예 25.3. “addPort()
메서드” 에 표시된 addPort()
메서드를 정의합니다. 이는 소비자 구현에서 사용할 수 있는 WSDL 계약이 없는 경우 사용됩니다. addPort()
메서드를 사용하면 Service
오브젝트에 정보를 제공할 수 있으며, 이는 일반적으로 서비스 구현에 대한 프록시를 생성하는 데 필요한 wsdl:port
요소에 저장됩니다.
예 25.3. addPort()
메서드
addPort
QName
portName
String
bindingId
String
endpointAddress
WebServiceException
portName
의 값은 QName입니다. 네임스페이스 부분의 값은 서비스의 대상 네임스페이스입니다. 서비스의 대상 네임스페이스는 @WebService
주석의 targetNamespace
속성에 지정됩니다. QName의 로컬 부분의 값은 wsdl:port
요소의 name
속성 값입니다. 다음 방법 중 하나로 이 값을 확인할 수 있습니다.
-
@WebService
주석의portName
속성에 지정합니다. -
@WebService
주석의name
속성 값에Port
를 추가합니다. -
SEI 이름에
포트
를 추가합니다.
bindingId
매개변수 값은 끝점에서 사용하는 바인딩 유형을 고유하게 식별하는 문자열입니다. SOAP 바인딩의 경우 표준 SOAP 네임스페이스: http://schemas.xmlsoap.org/soap/
을 사용합니다. 끝점에서 SOAP 바인딩을 사용하지 않는 경우 bindingId
매개 변수의 값은 바인딩 개발자에 의해 결정됩니다. endpointAddress
매개변수 값은 끝점이 게시되는 주소입니다. SOAP/HTTP 엔드포인트의 경우 주소는 HTTP 주소입니다. HTTP 이외의 전송은 다른 주소 체계를 사용합니다.
25.3.3. 예제
예 25.4. “서비스
오브젝트에 포트 추가” 예 25.2. “서비스
오브젝트 생성” 에서 생성된 Service
오브젝트에 포트를 추가하는 코드를 보여줍니다.
예 25.4. 서비스
오브젝트에 포트 추가
package com.fusesource.demo; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class Client { public static void main(String args[]) { ... QName portName = new QName("http://demo.redhat.com", "stockQuoteReporterPort"); s.addPort(portName, "http://schemas.xmlsoap.org/soap/", "http://localhost:9000/StockQuote"); ... } }
예 25.4. “서비스
오브젝트에 포트 추가” 의 코드는 다음을 수행합니다.
portName
매개 변수의 QName을 생성합니다.
addPort()
메서드를 호출합니다.
끝점에서 SOAP 바인딩을 사용하도록 지정합니다.
끝점이 게시되는 주소를 지정합니다.