JAX-WS 클라이언트에 대한 배치 디스크립터 개발
배치 디스크립터는 XML을 사용하여 형식화되는 표준 텍스트 파일로 웹 서비스 애플리케이션에 패키지됩니다. 선택적으로 Java™ EE(Java Platform, Enterprise Edition)용 웹 서비스 스펙(JSR 109) 서비스 참조 배치 디스크립터를 사용하여 JAX-WS(Java API for XML-Based Web Services) 웹 서비스 클라이언트 내 어노테이션에 지정된 애플리케이션 메타데이터를 기능 보강하거나 대체할 수 있습니다.
시작하기 전에
먼저 wsimport 명령을 사용하여 WSDL(Web Services Description Language) 파일에서 웹 서비스 클라이언트 아티팩트를 생성해야 합니다.
이 태스크 정보
application-client.xml, web.xml 또는 ejb-jar.xml Java EE 배치 디스크립터 내 service-ref 항목을 추가할 수 있습니다. service-ref 항목은 웹상의 Java EE 컴포넌트, 엔터프라이즈 JavaBeans(EJB) 또는 애플리케이션 클라이언트 컨테이너에서 사용하는 웹 서비스에 대한 참조를 나타냅니다. service-ref 항목에는 서비스 검색에 사용되는 JNDI 이름이 있습니다. service-ref 항목을 지정하면 클라이언트 애플리케이션에서 JNDI 검색을 사용하여 서비스를 찾을 수 있으며 자원 인젝션에 대한 이러한 서비스 참조를 사용할 수도 있습니다.
배치 디스크립터 중 하나에서 찾은 각 service-ref 항목에 대해 대응하는 오브젝트가 JNDI 네임스페이스에 바인드되며 포트 정보가 포함됩니다(지정된 경우). 이제 JAX-WS 클라이언트는 JAX-WS 서비스 또는 포트 인스턴스를 검색하도록 JNDI 검색을 수행할 수 있습니다.
JAX-WS 서비스를 표시하는 service-ref를 정의하는 경우 wsimport 도구에서 생성하는 javax.xml.ws.Service 서브클래스를 service-interface 값으로 사용합니다. 이는 @WebServiceClient 어노테이션을 포함하는 클래스입니다. JAX-WS 포트를 나타내는 service-ref를 정의하는 경우 service-interface 값은 계속 wsimport 도구에서 생성된 javax.xml.ws.Service 서브클래스이며, service-ref-type 값은 포트에서 사용하는 서비스 엔드포인트 인터페이스(SEI) 클래스를 지정합니다. SEI 클래스는 wsimport에서도 생성되며, @WebService 어노테이션으로 어노테이션을 작성합니다.
프로시저
결과
이제 클라이언트 애플리케이션에서 배치 디스크립터에 정의된 서비스 참조를 사용할 수 있습니다. 또한 배치 디스크립터를 사용하여 @WebServiceRef 또는 @Resource 어노테이션에서 지정한 정보를 대체하거나 기능을 보강할 수 있습니다.
<lookup-name> 배치 디스크립터 요소는 Java EE 6의 새로운 기능이며, 이미 정의된 서비스 참조를 간접적으로 참조하는 데 사용됩니다. <lookup-name> 요소를 사용하는 경우 <service-ref-name> 요소만 지정할 수 있으며, <service-ref>의 다른 기타 하위 요소는 정의할 수 없습니다.
다음 예제에서는 WEB-INF/web.xml 파일 내 service-ref 항목(JAX-WS 서비스에 대한 참조를 정의함) 및 web.xml 파일 내 service-ref 항목(첫 번째 service-ref에 대한 간접 참조를 정의함)을 보여줍니다.
<service-ref>
<service-ref-name>service/ExampleService</service-ref-name>
<service-interface>com.ibm.sample.ExampleService</service-interface>
<service-ref-type>com.ibm.sample.ExampleServicePortType</service-ref-type>
<wsdl-file>WEB-INF/wsdl/ExampleService.wsdl</wsdl-file>
</service-ref>
<service-ref>
<service-ref-name>service/ExampleService2</service-ref>
<lookup-name>java:comp/env/service/ExampleService</lookup-name>
</service-ref>
이전 service-ref가 WEB-INF/web.xml 파일에서 정의되었다고 가정하는 경우 클라이언트 애플리케이션은 이름 java:comp/env/service/ExampleService2를 사용하여 JNDI 검색을 수행할 수 있으며, 결과는 첫 번째 service-ref에 정의된 대로 WSDL 문서 WEB-INF/wsdl/ExampleService.wsdl에서 정의된 ExampleService 서비스에 대한 참조입니다.
다음에 수행할 작업
웹 서비스를 호출하는 데 사용되는 클라이언트 애플리케이션 코드를 작성하여 클라이언트 구현을 완료합니다.