JAX-WS 어노테이션
JAX-WS(Java™ API for XML-Based Web Services)에서는 어노테이션을 사용하여 웹 서비스 구현과 연관된 메타데이터를 지정하고 웹 서비스의 개발을 단순화해야 합니다. 어노테이션에서는 서버측 서비스 구현에 웹 서비스로 액세스하는 방법 또는 클라이언트측 Java 클래스가 웹 서비스에 액세스하는 방법에 대해 설명합니다.
표준 JAX-WS 프로그래밍은 서비스 엔드포인트 애플리케이션을 웹 서비스로 정의하는 데 사용되는 메타데이터로 Java 클래스를 어노테이션 지정하도록 지원하고 클라이언트가 웹 서비스에 액세스하는 방법을 제공합니다. JAX-WS는 Metadata Facility for Java Programming Language(JSR(Java Specification Request) 175) 스펙, Web Services Metadata for the Java Platform(JSR 181) 스펙 및 JAXB 어노테이션을 포함하는 JAX-WS 2.0 이상(JSR 224) 스펙에서 정의된 어노테이션을 기반으로 한 어노테이션 사용을 지원합니다. JSR 181 표준에서 어노테이션을 사용하면, 서비스 구현 클래스 또는 서비스 인터페이스를 어노테이션 지정할 수 있으며 애플리케이션이 웹 서비스로 사용됩니다. Java 소스에서 어노테이션을 사용하면 일반적으로 배치 디스크립터 파일, WSDL 파일에서 얻을 수 있는 추가 정보의 일부를 정의하거나 XML 및 WSDL의 메타데이터를 소스 아티팩트로 맵핑하여 웹 서비스 개발 및 배치를 단순화합니다.
어노테이션을 사용하여 바인딩, 핸들러 체인, portType의 세트 이름, 서비스 및 기타 WSDL 매개변수를 구성하십시오. 어노테이션은 Java를 WSDL 및 스키마에 맵핑하는 데 사용되고 런타임 시 JAX-WS 런타임에서 웹 서비스 호출을 처리하고 응답하는 방식을 제어하는 데에도 사용됩니다.
JAX-WS 웹 서비스의 경우, 어노테이션을 사용하여 배치 디스크립터 파일에 포함된 모든 정보를 지정할 수 있기 때문에 webservices.xml 배치 디스크립터를 선택적으로 사용할 수 있습니다. 배치 디스크립터 파일을 사용하여 기존 JAX-WS 어노테이션을 기능 보강하거나 대체할 수 있습니다. webservices.xml 배치 디스크립터에 정의한 정보는 어노테이션으로 지정된 모든 해당 정보를 대체합니다.
WebSphere® Application Server 버전 7.0 이상으로 시작하면 Java EE 5 애플리케이션 모듈(웹 애플리케이션 모듈 버전 2.5 이상 또는 EJB 모듈 버전 3.0 이상)이 JAX-WS 서비스 및 클라이언트를 식별하기 위해 어노테이션을 스캐닝합니다. 하지만 기본적으로 성능을 고려하여 JAX-WS 어노테이션을 찾기 위해 Java EE 5 이전 애플리케이션 모듈(웹 애플리케이션 모듈 버전 2.4 이하 또는 EJB 모듈 버전 2.1 이하)을 스캔하지 않습니다.
- EJB 모듈 또는 WAR 파일의 META-INF/MANIFEST.MF에서 UseWSFEP61ScanPolicy
특성을 true로 설정할 수 있습니다.
예를 들어 다음과 같습니다.
모듈의 META-INF/MANIFEST.MF 파일에서 이 특성이 true로 설정되는 경우, 모듈의 Java EE 버전에 관계없이 JAX-WS 어노테이션을 찾기 위해 모듈을 스캔합니다. 기본값이 false이고 이 기본값이 적용되는 경우, 버전이 Java EE 5 이상인 모듈에서만 JAX-WS 어노테이션이 지원됩니다.Manifest-Version: 1.0 UseWSFEP61ScanPolicy: true
- 관리 콘솔을 사용하여 com.ibm.websphere.webservices.UseWSFEP61ScanPolicy 사용자 정의 JVM(Java virtual machine) 특성을 설정할 수 있습니다. 올바른 탐색 경로를 사용하려면 JVM 사용자 정의 특성 문서를 참조하십시오. Java EE 버전에 관계없이 모든 모듈에서 어노테이션 스캔을 요청하려면 사용자 정의 특성 com.ibm.websphere.webservices.UseWSFEP61ScanPolicy를 true로 설정하십시오. 기본 동작에서 변경이 필요한 각 서버에 대한 설정을 변경해야 합니다.
![[z/OS]](../images/ngzos.gif)


- Java 클래스, enum 또는 인터페이스와 같은 유형
- 메소드
- Java 클래스에서 로컬 인스턴스 변수를 나타내는 필드
- Java 메소드 내의 매개변수
어노테이션 클래스 | 어노테이션 | 특성 |
---|---|---|
javax.jws. WebService | @WebService 어노테이션은 웹 서비스를 구현할 때에는
Java 클래스를 표시하고 웹 서비스 인터페이스를 구현할 때에는
SEI(Service Endpoint Interface)를 표시합니다. 중요사항:
|
|
javax.jws. WebMethod | @WebMethod 어노테이션은 웹 서비스 조작인
메소드를 선언합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.jws. Oneway | @Oneway 어노테이션은 메소드를
입력 메시지만 있고 출력 메시지는 없는 웹 서비스의 단방향 조작으로
선언합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.jws. WebParam | @WebParam 어노테이션은 웹 서비스
메시지 파트 및 XML 요소에 대한 개별 매개변수의 맵핑을 사용자
정의합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.jws. WebResult | @WebResult 어노테이션이 WSDL 파트 또는 XML 요소에 대한
리턴 값의 맵핑을 사용자 정의합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.jws. HandlerChain | @HandlerChain 어노테이션은 웹 서비스를
외부적으로 정의한 핸들러 체인과 연관시킵니다. SEI(Service Endpoint Interface) 또는 서비스 엔드포인트 구현 클래스에서 @HandlerChain 어노테이션을 사용하여 서버측 핸들러만 구성할 수 있습니다. 몇 가지 방법 중 하나를 사용하여 클라이언트측 핸들러를 구성하십시오. 생성된 서비스 클래스 또는 SEI에서 @HandlerChain 어노테이션을 사용하여 클라이언트측 핸들러를 구성할 수 있습니다. 또한 서비스에서 HandlerResolver 인터페이스의 사용자 구현을 프로그래밍 방식으로 등록하거나 바인딩 오브젝트에서 핸들러 체인을 프로그래밍 방식으로 설정할 수 있습니다. |
|
javax.jws. SOAPBinding | @SOAPBinding 어노테이션은 SOAP 메시지
프로토콜에 대한 웹 서비스의 맵핑을 지정합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 유형 또는 메소드에 이 어노테이션을 적용하십시오. 메소드 레벨의 어노테이션이 지정할 수 있는 내용으로 제한되며 style 특성이 DOCUMENT인 경우에만 사용됩니다. 메소드 레벨의 어노테이션이 지정되지 않은 경우, 유형의 @SOAPBinding 동작이 사용됩니다. |
|
어노테이션 클래스 | 어노테이션 | 특성 |
---|---|---|
javax.xml.ws. Action | @Action 어노테이션은 웹 서비스 조작과 연관된
WS-Addressing 조치를 지정합니다. 특정한 메소드와 함께 이 어노테이션을 사용하고 해당 WSDL 문서를 생성하면, WS-Addressing 조치 확장자 속성이 해당 메소드에 해당하는 WSDL 조작의 입력 및 출력 요소에 추가됩니다. 또한 이 속성을 WSDL 조작에 추가하려면 서버 엔드포인트 구현 클래스에서 @Addressing 어노테이션을 지정해야 합니다. @Addressing 어노테이션을 사용하지 않으려면 조치 속성이 이미 정의된 사용자의 WSDL 문서를 제공할 수 있습니다. |
|
javax.xml.ws. BindingType | @BindingType 어노테이션은 이 유형의 엔드포인트를 공개할 때
사용할 바인딩을 지정합니다. 서버 엔드포인트 구현 클래스에 이 어노테이션을 적용하십시오. 중요사항: 어노테이션에 대한 값으로 javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING 또는 javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING을 지정하여 MTOM을 사용하려면 JavaBeans 엔드포인트 구현 클래스에서 @BindingType 어노테이션을
사용할 수 있습니다.
|
|
javax.xml.ws. FaultAction | @FaultAction 어노테이션은 잘못된 응답에
추가된 WS-Addressing 조치를 지정합니다. 이 어노테이션은 @Action 어노테이션에 포함되어야 합니다. 특정한 메소드와 함께 이 어노테이션을 사용하면, WS-Addressing FaultAction 확장자 속성이 해당 메소드에 맞는 WSDL 조작의 잘못된 요소에 추가됩니다. 또한 이 속성을 WSDL 조작에 추가하려면 서버 엔드포인트 구현 클래스에서 @Addressing 어노테이션을 지정해야 합니다. @Addressing 어노테이션을 사용하지 않으려면 조치 속성이 이미 정의된 사용자의 WSDL 문서를 제공할 수 있습니다. |
|
javax.xml.ws. RequestWrapper | @RequestWrapper 어노테이션은 런타임 시 사용되는
요청 랩퍼 Bean에 대한 직렬화 및 직렬화 해제를 위해
JAXB 생성 요청 랩퍼 Bean, 요소 이름 및 네임스페이스를
제공합니다. Java 오브젝트를 시작할 때 이 요소는 문서 리터럴 모드에서 오버로드 충돌을 해결하는 데 사용됩니다. className 속성은 이 경우에만 필요합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.xml.ws. ResponseWrapper | @ResponseWrapper 어노테이션은 런타임 시 사용되는
응답 랩퍼 Bean에 대한 직렬화 및 직렬화 해제를 위해
JAXB 생성 응답 랩퍼 Bean, 요소 이름 및 네임스페이스를
제공합니다. Java 오브젝트를 시작할 때 이 요소는 문서 리터럴 모드에서 오버로드 충돌을 해결하는 데 사용됩니다. className 속성은 이 경우에만 필요합니다. 클라이언트 또는 서버 SEI(Service Endpoint Interface) 또는 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.xml.ws. RespectBinding | @RespectBinding 어노테이션은 JAX-WS 구현이
엔드포인트에 wsdl:binding의 컨텐츠를 사용해야 하는지를
지정합니다. 이 어노테이션이 지정되면, 사용 가능한 속성이 true로 설정된 모든 필수 WSDL 확장 요소를 확인하기 위한 검사 수행이 지원됩니다. 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.xml.ws. ServiceMode | @ServiceMode 어노테이션은 서비스 제공자가
전체 프로토콜 메시지 또는 메시지 페이로드에 대한
액세스 권한을 가져야 하는지 지정합니다. 중요사항: @ServiceMode
어노테이션은 @WebServiceProvider 어노테이션으로 어노테이션 지정되는 클래스에서만 지원됩니다.
|
|
javax.xml.ws. soap.Addressing | @Addressing 어노테이션은 이 서비스가
WS-Addressing 지원을 사용하려 한다고 지정합니다. 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|
javax.xml.ws. soap.MTOM | @MTOM 어노테이션은 MTOM을 사용하여 SOAP 메시지
본문의 2진 컨텐츠를 전송하는지 지정합니다. 서비스 엔드포인트 구현 클래스에 이 어노테이션을 적용하십시오. |
|
javax.xml.ws. WebFault | @WebFault 어노테이션이 WSDL 결함을 Java
예외로 맵핑합니다. 이 어노테이션은 WSDL 결함
메시지에서 참조된 글로벌 요소에서 생성되는
JAXB 유형의 직렬화 중에 결함 이름을 캡처하는 데
사용됩니다. 또한 WSDL 결함에 대한 서비스의 예외 맵핑을 사용자
정의하는 데 사용할 수도 있습니다. 이 어노테이션은 클라이언트 또는 서버에서 결함 구현 클래스에만 적용 가능합니다. |
|
javax.xml.ws. WebServiceProvider | @WebServiceProvider 어노테이션은 클래스가 JAX-WS
제공자 구현 클래스에 대한 요구사항을 만족시킨다고
선언합니다. 중요사항:
|
|
javax.xml.ws. WebServiceRef | @WebServiceRef 어노테이션은 클라이언트에서
호출된 웹 서비스에 대한 참조를 정의합니다. 참고:
|
|
javax.xml.ws. WebServiceRefs | @WebServiceRefs 어노테이션은 다중 @WebServiceRef
어노테이션을 특정 클래스와 연관시킵니다. 참고: @WebServiceRef 어노테이션은 특정 클래스 유형에서만
지원됩니다. 예제는 JAX-WS 엔드포인트 구현 클래스,
JAX-WS 핸들러 클래스, Enterprise JavaBeans 클래스 및
서블릿 클래스입니다. 이 어노테이션은 @Resource 어노테이션과 동일한
클래스 유형에서 지원됩니다. 지원되는 클래스 유형에 대한 전체 목록은
Java EE(Java Platform, Enterprise Edition) 5 스펙을
참조하십시오.
|
|
어노테이션 클래스 | 어노테이션 | 특성 |
---|---|---|
javax.annotation. Resource | @Resource 어노테이션이 애플리케이션에서 필요한
WebServiceContext 자원을 표시합니다. 참고:
JavaBeans 엔드포인트 또는 제공자 엔드포인트에 대한 서버 엔드포인트 구현 클래스에서 WebServiceContext 유형 필드에 이 어노테이션을 적용하면 컨테이너가 지정된 필드에 WebServiceContext의 인스턴스를 삽입합니다. 이 어노테이션이 @WebServiceRef 어노테이션 대신 사용되면, @WebServiceRef 어노테이션에 설명된 규칙이 적용됩니다. |
|
javax.annotation. Resources | @Resources 어노테이션이 다중 @Resource 어노테이션을 특정 클래스와 연관시키고 다중 자원 선언에 대한 컨테이너로 제공됩니다. |
|
javax.annotation. PostConstruct | @PostConstruct 어노테이션은 종속성 삽입이
클래스에서 수행된 후 실행해야 하는 메소드를
표시합니다. JAX-WS 애플리케이션 핸들러, 서버 엔드포인트 구현 클래스에 이 어노테이션을 적용하십시오. |
|
javax.annotation. PreDestroy | @PreDestroy 어노테이션은 인스턴스가
컨테이너에 의해 제거되고 있을 때 실행해야 하는
메소드를 표시합니다. JAX-WS 핸들러 또는 서버 엔드포인트 구현 클래스에 이 어노테이션을 적용하십시오. |
|
어노테이션 클래스 | 어노테이션 | 특성 |
---|---|---|
com.ibm.websphere. wsaddressing. jaxws21. SubmissionAddressing | @SubmissionAddressing 어노테이션은
이 서비스가 2004/08 WS-Addressing 스펙에 대한 WS-Addressing
지원을 사용하려 한다고 지정합니다. 이 어노테이션은 JAX-WS 2.1 스펙에 대한 IBM 구현의 일부입니다. 서버 엔드포인트 구현 클래스에서 메소드에 이 어노테이션을 적용하십시오. |
|