3.2. Jakarta XML Web Services Web Service Endpoints
3.2.1. Jakarta XML Web Services Web Service Endpoints 정보 링크 복사링크가 클립보드에 복사되었습니다!
자카르타 XML 웹 서비스 웹 서비스 엔드포인트는 웹 서비스의 서버 구성 요소입니다. 클라이언트 및 기타 웹 서비스는 SOAP(Simple Object Access Protocol)라는 XML 언어를 사용하여 HTTP 프로토콜을 통해 통신합니다. 엔드포인트 자체는 JBoss EAP 컨테이너에 배포됩니다.
다음 두 가지 방법 중 하나로 WSDL 설명자를 만들 수 있습니다.
- 수동으로 WSDL 설명자 작성.
- WSDL 설명자를 자동으로 생성하는 Jakarta XML Web Services 주석 사용. WSDL 설명자를 생성하는 가장 일반적인 방법입니다.
엔드포인트 구현 빈은 Jakarta XML Web Services 주석을 사용하여 서버에 배포됩니다. 서버는 클라이언트 사용을 위해 WSDL 형식으로 추상화 계약을 자동으로 생성하고 게시합니다. 모든 마샬링 및 마샬링 취소는 자카르타 XML 바인딩 서비스에 위임됩니다.
엔드포인트 자체는 POJO(Plain Old Java Object) 또는 Jakarta EE 웹 애플리케이션일 수 있습니다. Jakarta Enterprise Beans 3 상태 비저장 세션 빈을 사용하여 끝점을 노출할 수도 있습니다. WAR(웹 아카이브) 파일에 패키지됩니다. 엔드포인트 패키징 사양은 Jakarta Web Services Metadata Specification 2.1 에 정의되어 있습니다.
예제: POJO 엔드포인트
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class JSEBean {
@WebMethod
public String echo(String input) {
...
}
}
예제: 웹 서비스 엔드 포인트
<web-app ...>
<servlet>
<servlet-name>TestService</servlet-name>
<servlet-class>org.jboss.quickstarts.ws.jaxws.samples.jsr181pojo.JSEBean01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
다음 Jakarta Enterprise Beans 3 상태 비저장 세션 빈은 원격 인터페이스에서 동일한 메서드와 엔드포인트 작업을 표시합니다.
@Stateless
@Remote(EJB3RemoteInterface.class)
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class EJB3Bean implements EJB3RemoteInterface {
@WebMethod
public String echo(String input) {
...
}
}
서비스 엔드 포인트 인터페이스
Jakarta XML Web Services 서비스는 일반적으로 직접 또는 주석을 사용하여 WSDL 포트 유형에서 매핑될 수 있는 Java 서비스 엔드포인트 인터페이스(SEI)를 구현합니다. 이 SEI는 Java 개체와 해당 XML 표현 간의 세부 정보를 숨기는 고급 추상화를 제공합니다.
엔드포인트 공급자 인터페이스
Jakarta XML Web Services 서비스는 XML 메시지 수준에서 작동할 수 있는 기능이 필요한 경우도 있습니다. 엔드포인트 프로바이더 인터페이스는 이 기능을 구현하는 웹 서비스에 이 기능을 제공합니다.
엔드 포인트 사용 및 액세스
웹 서비스를 배포한 후에는 WSDL을 사용하여 애플리케이션의 기반이 될 구성 요소 스텁을 생성할 수 있습니다. 그러면 애플리케이션이 엔드포인트에 액세스하여 작업을 수행할 수 있습니다.
3.2.2. Jakarta XML Web Services Web Service Endpoint 개발 및 배포 링크 복사링크가 클립보드에 복사되었습니다!
Jakarta XML Web Services 서비스 끝점은 Jakarta XML Web Services 클라이언트의 요청에 응답하고 WSDL 정의를 게시하는 서버 측 구성 요소입니다.
Jakarta XML Web Services 엔드포인트 애플리케이션을 개발하는 방법에 대한 실제 예는 JBoss EAP와 함께 제공되는 다음 빠른 시작을 참조하십시오.
- jaxws-addressing
- jaxws-ejb
- jaxws-pojo
- jaxws-retail
- wsat-simple
- wsba-coordinator-completion-simple
- wsba-participant-completion-simple
개발 요구 사항
웹 서비스는 Jakarta XML Web Services API 및 Jakarta Web Services Metadata Specification 2.1 사양 의 요구 사항을 충족해야 합니다.
-
javax.jws.WebService주석을 포함합니다. - 모든 메서드 매개 변수 및 반환 유형은 Jakarta XML 바인딩 2.3 사양과 호환됩니다.
다음은 이러한 요구 사항을 충족하는 웹 서비스 구현의 예입니다.
예제: 웹 서비스 구현
package org.jboss.quickstarts.ws.jaxws.samples.retail.profile;
import javax.ejb.Stateless;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;
@Stateless
@WebService(
name = "ProfileMgmt",
targetNamespace = "http://org.jboss.ws/samples/retail/profile",
serviceName = "ProfileMgmtService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class ProfileMgmtBean {
@WebMethod
public DiscountResponse getCustomerDiscount(DiscountRequest request) {
DiscountResponse dResponse = new DiscountResponse();
dResponse.setCustomer(request.getCustomer());
dResponse.setDiscount(10.00);
return dResponse;
}
}
다음은 이전 예제의 ProfileMgmtBean 빈에서 사용하는 DiscountRequest 클래스의 예입니다. 자세한 정보 표시를 위해 주석이 포함됩니다. 일반적으로 Jakarta XML 바인딩 기본값은 적절하며 지정할 필요가 없습니다.
예제: DiscountRequest 클래스
package org.jboss.test.ws.jaxws.samples.retail.profile;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import org.jboss.test.ws.jaxws.samples.retail.Customer;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "discountRequest",
namespace="http://org.jboss.ws/samples/retail/profile",
propOrder = { "customer" }
)
public class DiscountRequest {
protected Customer customer;
public DiscountRequest() {
}
public DiscountRequest(Customer customer) {
this.customer = customer;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer value) {
this.customer = value;
}
}
배포 패키징
구현 클래스는 JAR 배포로 래핑됩니다. 배포에 필요한 메타데이터는 구현 클래스 및 서비스 엔드포인트 인터페이스의 주석에서 가져옵니다. 관리 CLI 또는 관리 콘솔을 사용하여 JAR을 배포할 수 있으며 HTTP 엔드포인트가 자동으로 생성됩니다.
다음 목록은 Jakarta Enterprise Beans 웹 서비스의 JAR 배포를 위한 구조의 예를 보여줍니다.
$ jar -tf jaxws-samples-retail.jar
org/jboss/test/ws/jaxws/samples/retail/profile/DiscountRequest.class
org/jboss/test/ws/jaxws/samples/retail/profile/DiscountResponse.class
org/jboss/test/ws/jaxws/samples/retail/profile/ObjectFactory.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmt.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmtBean.class
org/jboss/test/ws/jaxws/samples/retail/profile/ProfileMgmtService.class
org/jboss/test/ws/jaxws/samples/retail/profile/package-info.class