24.3.2. 필수 주석
24.3.2.1. 개요
Java 코드에서 서비스를 생성하려면 코드에 주석을 하나만 추가해야 합니다. SEI 및 구현 클래스 모두에 @WebService
주석을 추가해야 합니다.
24.3.2.2. @WebService 주석
@WebService
주석은 javax.jws.WebService 인터페이스에서 정의되며 인터페이스 또는 서비스로 사용할 클래스에 배치됩니다. @WebService
에 설명 된 속성이 있습니다. 표 24.1. “@WebService
속성”
속성 | 설명 |
---|---|
서비스 인터페이스의 이름을 지정합니다. 이 속성은 WSDL 계약에서 서비스 인터페이스를 정의하는 | |
서비스가 정의된 대상 네임스페이스를 지정합니다. 이 속성을 지정하지 않으면 대상 네임스페이스는 패키지 이름에서 파생됩니다.If this property is not specified, the target namespace is derived from the package name. | |
게시된 서비스의 이름을 지정합니다. 이 속성은 게시된 서비스를 정의하는 | |
서비스의 WSDL 계약이 저장되는 URL을 지정합니다. 상대 URL을 사용하여 지정해야 합니다. 기본값은 서비스가 배포되는 URL입니다. | |
구현 클래스에서 구현하는 SEI의 전체 이름을 지정합니다. 이 속성은 서비스 구현 클래스에서 특성이 사용되는 경우에만 지정됩니다. | |
서비스가 게시되는 끝점의 이름을 지정합니다. 이 속성은 게시된 서비스의 끝점 세부 정보를 지정하는 | |
[a]
SEI에서 WSDL을 생성할 때 구현 클래스 이름 대신 인터페이스의 이름이 사용됩니다.
|
@WebService
주석 속성의 값을 제공할 필요가 없습니다. 그러나 가능한 한 많은 정보를 제공하는 것이 좋습니다.
24.3.2.3. SEI에 주석 달기
SEI에서는 @WebService
주석을 추가해야 합니다. SEI는 서비스를 정의하는 계약이므로 @WebService
주석 속성에서 서비스에 대해 가능한 한 자세히 지정해야 합니다.
예 24.3. “@WebService
주석과 인터페이스” 는 @WebService
주석을 사용하여 예 24.1. “간단한 SEI” 에 정의된 인터페이스를 표시합니다.
예 24.3. @WebService
주석과 인터페이스
package com.fusesource.demo; import javax.jws.*; @WebService(name="quoteUpdater", targetNamespace="http:\\demos.redhat.com", serviceName="updateQuoteService", wsdlLocation="http:\\demos.redhat.com\quoteExampleService?wsdl", portName="updateQuotePort") public interface quoteReporter { public Quote getQuote(String ticker); }
예 24.3. “@WebService
주석과 인터페이스” 의 @WebService
주석은 다음과 같습니다.
서비스 인터페이스를 정의하는 wsdl:portType
요소의 name
속성 값이 quoteUpdater
임을 지정합니다.
서비스의 대상 네임스페이스가 http:\\demos.redhat.com 임을 지정합니다.
게시된 서비스를 정의하는 wsdl:service
요소의 값이 updateQuoteService
임을 지정합니다.
서비스가 http:\\demos.redhat.com\quoteExampleService?wsdl 에서 WSDL 계약을 게시하도록 지정합니다.
서비스를 노출하는 엔드포인트를 정의하는 wsdl:port
요소의 name
속성 값이 updateQuotePort
임을 지정합니다.
24.3.2.4. 서비스 구현에 주석 달기
@WebService
주석으로 SEI에 주석을 추가하는 것 외에도 @WebService
주석을 사용하여 서비스 구현 클래스에 주석을 달아야 합니다. 서비스 구현 클래스에 주석을 추가할 때 endpointInterface
속성만 지정해야 합니다. 예 24.4. “주석이 달린 서비스 구현 클래스” 에 표시된 대로 속성은 SEI의 전체 이름으로 설정해야 합니다.
예 24.4. 주석이 달린 서비스 구현 클래스
package org.eric.demo; import javax.jws.*; @WebService(endpointInterface="com.fusesource.demo.quoteReporter") public class stockQuoteReporter implements quoteReporter { public Quote getQuote(String ticker) { ... } }