EJB 가져오기 바인딩을 사용하면 SCA(Service Component Architecture) 모듈이 모듈 외부의 EJB 구현을 호출할 수 있습니다.
외부 EJB 구현(모듈 외부의 EJB 구현)에서 서비스를 가져오면 사용자가 비즈니스 로직을 WebSphere® Process Server 환경에 플러그인하고 비즈니스 프로세스에 참여할 수 있습니다. EJB 가져오기 바인딩에 대한 두 가지 사용법 시나리오가 지원됩니다.
컴포넌트 | 목적 |
---|---|
EJB 구현 | 비즈니스 인터페이스를 구현하는 EJB |
JNDI 이름 | EJB 참조를 찾음 |
JAX-WS 데이터 핸들러 | 서버가 Java™ 오브젝트를 비즈니스 오브젝트로(단방향) 또는 응답 데이터를
비즈니스 오브젝트로(양방향) 전환하기 위해 필요한 데이터 변환을 수행합니다. 이 데이터 핸들러는 JAX-WS 및 JAXB 스펙을 사용하여 SCA의 데이터를
Java에 맵핑합니다. 주: XSD 유형에서 JAX-WS 스펙에 의해 정의된 Java
유형으로의 맵핑을 사용자 정의하려면 비즈니스 요구에 맞게 JAXB 어노테이션을 변경하십시오. JAXWSDataHandler는 xs:any, xs:anyType 및 xs:anySimpleType을
지원합니다. 현재 지원은
JAX-WS 1.0 및 JAXB 2.0 스펙으로 제한됩니다.
|
EJB 결함 선택기 | EJB 호출로 인해 결함, 런타임 예외, 성공적인 응답 중 어느 것이 발생했는지 판별합니다. 결함이 발견되면 결함 선택기가 서버로 기본 결함 이름을 리턴하여 JAXWSDataHandler가 예외 오브젝트를 결함 비즈니스 오브젝트로 변환할 수 있도록 합니다. |
EJB 가져오기 함수 선택기 | EJB 가져오기의 SCA 컴포넌트에 의해 호출된 WSDL 메소드 이름에 따라 EJB 메소드 유형을 파생시킵니다. 해당 유형이 있는 경우 해당 유형에서는 @WebMethod 어노테이션을 사용하여 WSDL 메소드의 올바른 Java 메소드 맵핑을 판별합니다. @WebMethod 어노테이션이 누락된 경우 함수 선택기는 WSDL 메소드 이름과 동일한 이름의 Java 메소드를 리턴합니다. |
사용자 시나리오에서 JAX-WS를 지원하지 않고 일부 사용자 정의 맵핑이 필요한 경우에는 타스크를 수행하기 위해 사용자 정의 데이터 핸들러, 함수 선택기 및 결함 선택기가 필요합니다. 그렇지 않은 경우에는 JAXWSDataHandler, EJBFaultSelector 및 EJBImportFunctionSelector를 통해 타스크가 완료됩니다. 여기에는 일반적으로 사용자 정의 맵핑 알고리즘에 의해 완료되는 맵핑이 포함됩니다.
데이터 변환이 필요한 상황에서 EJB 바인딩과 데이터 핸들러 사이의 계약은 Java 오브젝트 배열(Object[])을 사용하여 수행됩니다.
바인딩이 EJB 호출로부터의 응답을 처리하기 위해 Object[]를 준비합니다. Object[]의 첫 번째 요소는 Java 메소드 호출로부터의 리턴값입니다. 다음 값은 메소드의 입력 매개변수를 표시합니다. 이는 In/Out 및 Out 유형의 매개변수를 지원하기 위해 필요합니다. Out 유형의 매개변수의 경우 응답 데이터 오브젝트에 값이 리턴되어야 합니다. 데이터 핸들러는 Object[]에서 찾은 값을 처리하여 변환한 후 데이터 오브젝트에 대한 응답을 리턴합니다.
EJB 바인딩 레벨에서 지정된 데이터 핸들러는 요청, 응답, 결함 및 런타임 예외 처리를 수행하는 데 사용됩니다. 결함의 경우, 특정 데이터 핸들러는 faultBindingType 구성 특성을 지정하여 각 결함용으로 지정될 수 있습니다. 이것은 EJB 바인딩 레벨에서 지정한 값을 대체합니다.
JAX-WS 데이터 핸들러는 EJB 바인딩이 WSDL 인터페이스를 가질 때 기본값으로 사용됩니다. 이 데이터 핸들러는 JAX-WS(XML 기반 WebService용 Java API) 스펙을 사용하여 컴파일되며 WSDL 메소드 호출을 가져오기에 대한 Java 메소드 호출로 변환하는 데 사용됩니다(아웃바운드 처리). 결함 선택기가 ResponseType.RUNTIME의 예외를 리턴할 때 런타임 예외 및 결함 처리의 목적으로 결함 데이터 오브젝트에 대한 Java 예외의 변환도 처리합니다. 이 데이터 핸들러는 JAX-WS 호출을 표시하는 SOAP 메시지를 데이터 오브젝트로 변환하는 데 사용할 수 없습니다.
public class TestType { private Object[] object; @XmlAnyElement (lax=true) public Object[] getObject() { return object; ) public void setObject (Object[] object) { this.object=object; ) )TestType의 특성 오브젝트가 xs:any 필드로 됩니다. xs:any 필드에 사용되는 Java 클래스 값에는 @XmlAnyElement 어노테이션이 있어야 합니다. 예를 들어, 오브젝트 배열을 채우는 데 사용 중인 Java 클래스가 주소인 경우 주소 클래스에는 @XmlRootElement 어노테이션이 있어야 합니다.
EJB 바인딩과 결함 핸들러 간의 계약은 Java 오브젝트 배열(Object[])을 사용하여 수행됩니다.
가져오기에 성공하면 바인딩이 Object[]를 어셈블합니다. Object[]의 첫 번째 요소는 Java 메소드 호출로부터의 리턴값입니다. 다음 값은 메소드의 입력 매개변수를 표시합니다. 이는 In/Out 및 Out 유형의 매개변수를 지원하기 위해 필요합니다.
유형 | 리턴값 |
---|---|
결함 | ResponseType.FAULT |
런타임 예외 | ResponseType.RUNTIME |
정상 응답 | ResponseType.RESPONSE |
이 결함 선택기는 EJB 가져오기 바인딩과의 결함 선택기 계약을 따릅니다. 이 결함 선택기는 전달된 Object[]에 예외 오브젝트가 포함되어 있으면 ResponseType.BUSINESSFAULT를 리턴합니다. 예외 오브젝트가 메소드의 선언된 예외 유형과 일치하지 않으면 이 결함 선택기는 ResponseType.RUNTIME_EXCEPTION을 리턴합니다. 그렇지 않으면 ResponseType.RESPONSE를 리턴합니다.
EJB 바인딩과 가져오기 함수 선택기 간의 계약은 JAVA 오브젝트 배열(Object[])을 사용하여 수행됩니다.
Object[]의 첫 번째 요소는 WSDL의 이름입니다. Object[]의 두 번째 요소는 입력 비즈니스 요소입니다. 함수 선택기는 EJB 인터페이스의 메소드를 표시하는 java.lang.reflect.Method 오브젝트를 리턴합니다.