WebSphere Enterprise Service Bus, 버전 6.2.0 운영 체제: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


EJB 바인딩: 일반 Perspective

EJB 가져오기 바인딩을 사용하면 SCA(Service Component Architecture) 모듈이 모듈 외부의 EJB 구현을 호출할 수 있습니다.

EJB 가져오기 바인딩

EJB 가져오기 바인딩을 사용하면 이용하는 모듈이 가져오기 컴포넌트에 바인드되는 방법을 지정하여 SCA 모듈이 EJB 구현을 호출할 수 있습니다. 예를 들면, 다음과 같습니다.
  • SCA 컴포넌트 -> EJB 2.1 가져오기 == RMI/IIOP ==> EJB 2.1

외부 EJB 구현(모듈 외부의 EJB 구현)에서 서비스를 가져오면 사용자가 비즈니스 로직을 WebSphere® Process Server 환경에 플러그인하고 비즈니스 프로세스에 참여할 수 있습니다. EJB 가져오기 바인딩에 대한 두 가지 사용법 시나리오가 지원됩니다.

EJB 가져오기에는 다음과 같은 주요 컴포넌트가 포함되어 있습니다. JAXWSDataHandler, EJBFaultSelector 및 EJBImportFunctionSelector는 WebSphere Process Server에 의해 제공됩니다.
표 1. 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[])을 사용하여 수행됩니다.

아웃바운드 통신 중에 다음 단계가 발생합니다.
  1. EJB 바인딩이 WSDL에 지정된 예상 유형, 예상 요소 및 대상 메소드 이름과 일치시키기 위해 BindingContext에 설정합니다.
  2. EJB 바인딩이 데이터 변환이 필요한 데이터 오브젝트의 변환 메소드를 호출합니다.
  3. 데이터 핸들러가 메소드의 매개변수를(메소드 안에서 해당 정의의 순서로) 표시하는 Object[]를 리턴합니다.
  4. EJB 바인딩이 Object[]를 사용하여 대상 EJB 인터페이스에서 메소드를 호출합니다.

바인딩이 EJB 호출로부터의 응답을 처리하기 위해 Object[]를 준비합니다. Object[]의 첫 번째 요소는 Java 메소드 호출로부터의 리턴값입니다. 다음 값은 메소드의 입력 매개변수를 표시합니다. 이는 In/Out 및 Out 유형의 매개변수를 지원하기 위해 필요합니다. Out 유형의 매개변수의 경우 응답 데이터 오브젝트에 값이 리턴되어야 합니다. 데이터 핸들러는 Object[]에서 찾은 값을 처리하여 변환한 후 데이터 오브젝트에 대한 응답을 리턴합니다.

EJB 바인딩 레벨에서 지정된 데이터 핸들러는 요청, 응답, 결함 및 런타임 예외 처리를 수행하는 데 사용됩니다. 결함의 경우, 특정 데이터 핸들러는 faultBindingType 구성 특성을 지정하여 각 결함용으로 지정될 수 있습니다. 이것은 EJB 바인딩 레벨에서 지정한 값을 대체합니다.

JAX-WS 데이터 핸들러

JAX-WS 데이터 핸들러는 EJB 바인딩이 WSDL 인터페이스를 가질 때 기본값으로 사용됩니다. 이 데이터 핸들러는 JAX-WS(XML 기반 WebService용 Java API) 스펙을 사용하여 컴파일되며 WSDL 메소드 호출을 가져오기에 대한 Java 메소드 호출로 변환하는 데 사용됩니다(아웃바운드 처리). 결함 선택기가 ResponseType.RUNTIME의 예외를 리턴할 때 런타임 예외 및 결함 처리의 목적으로 결함 데이터 오브젝트에 대한 Java 예외의 변환도 처리합니다. 이 데이터 핸들러는 JAX-WS 호출을 표시하는 SOAP 메시지를 데이터 오브젝트로 변환하는 데 사용할 수 없습니다.

데이터 핸들러는 기타 XSD 데이터 유형과 함께 xs:AnyType, xs:AnySimpleType 및 xs:Any를 지원합니다. xs:Any에 대한 지원을 사용 가능하게 하려면 Java 코드의 Bean 특성에 대해 @XmlAnyElement (lax=true)를 사용하십시오. 예제:
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 어노테이션이 있어야 합니다.
JAX-WS 데이터 핸들러에 대해 다음 제한사항을 적용할 수 있습니다.
  • 헤더 속성 @WebParam 어노테이션에 대한 지원이 없습니다.
  • 비즈니스 오브젝트 스키마 파일(XSD 파일)의 네임 스페이스가 Java 패키지 이름의 기본 맵핑을 포함하지 않습니다. package-info.java의 어노테이션 @XMLSchema도 작동하지 않습니다. 네임 스페이스가 있는 XSD를 작성하는 유일한 방법은 @XmlType 및 XmlRootElement 어노테이션을 사용하는 것입니다. @XmlRootElement는 Java Bean 유형의 글로벌 요소에 대한 대상 네임 스페이스를 정의합니다.
  • EJB 가져오기 마법사는 관련되지 않은 클래스에 대해 XSD 파일을 작성하지 않습니다. 버전 2.0에서는 @XmlSeeAlso 어노테이션을 지원하지 않으므로 하위 클래스가 상위 클래스로부터 직접 참조되지 않으면 XSD가 작성되지 않습니다. 이 문제점은 해당 하위 클래스에 대해 SchemaGen을 실행하여 해결합니다. SchemaGen은 지정된 Java Bean에 대한 XSD 파일을 작성하기 위해 제공되는 명령행 유틸리티입니다. 이는 WPS_Install_Home/bin 디렉토리에 있습니다. 해결책을 적용하려면 이러한 XSD를 수동으로 비즈니스 통합 모듈에 복사해야 합니다.

결함 핸들러 계약

EJB 바인딩과 결함 핸들러 간의 계약은 Java 오브젝트 배열(Object[])을 사용하여 수행됩니다.

가져오기에 성공하면 바인딩이 Object[]를 어셈블합니다. Object[]의 첫 번째 요소는 Java 메소드 호출로부터의 리턴값입니다. 다음 값은 메소드의 입력 매개변수를 표시합니다. 이는 In/Out 및 Out 유형의 매개변수를 지원하기 위해 필요합니다.

예외 시나리오의 경우 바인딩은 Object[]를 어셈블하며 첫 번째 요소는 메소드에 의해 발생한 예외를 표시합니다. 결함 선택기는 다음과 같은 값을 리턴할 수 있습니다.
표 2. 결함 핸들러 리턴값
유형 리턴값
결함 ResponseType.FAULT
런타임 예외 ResponseType.RUNTIME
정상 응답 ResponseType.RESPONSE
결함 선택기가 ResponseType.FAULT 값을 리턴하면 getFaultName()에서는 기본 결함 이름을 리턴해야 합니다. 이 기본 결함 이름은 바인딩이 모델에서 해당 WSDL 결함 이름을 판별하고 올바른 결함 데이터 핸들러를 호출하는 데 사용합니다.

EJB 결함 선택기

이 결함 선택기는 EJB 가져오기 바인딩과의 결함 선택기 계약을 따릅니다. 이 결함 선택기는 전달된 Object[]에 예외 오브젝트가 포함되어 있으면 ResponseType.BUSINESSFAULT를 리턴합니다. 예외 오브젝트가 메소드의 선언된 예외 유형과 일치하지 않으면 이 결함 선택기는 ResponseType.RUNTIME_EXCEPTION을 리턴합니다. 그렇지 않으면 ResponseType.RESPONSE를 리턴합니다.

가져오기 함수 선택기 계약

EJB 바인딩과 가져오기 함수 선택기 간의 계약은 JAVA 오브젝트 배열(Object[])을 사용하여 수행됩니다.

Object[]의 첫 번째 요소는 WSDL의 이름입니다. Object[]의 두 번째 요소는 입력 비즈니스 요소입니다. 함수 선택기는 EJB 인터페이스의 메소드를 표시하는 java.lang.reflect.Method 오브젝트를 리턴합니다.

EJB 가져오기 함수 선택기

이 함수 선택기는 EJB 가져오기 바인딩과의 함수 선택기 계약을 따릅니다. Object[]의 첫 번째 요소는 WSDL 이름을 가진 Java 메소드입니다. 이 함수 선택기는 JAX-WS 어노테이션에 따라 지정된 WSDL 메소드에 대한 Java 메소드를 파생시키며 입력 데이터 오브젝트의 어노테이션을 사용하여 EJB 인터페이스를 정의하는 Java 클래스의 이름을 파생시킵니다.


concept 개념 주제

이용약관 | 피드백


시간소인 아이콘 마지막 갱신 날짜: 2010년 7월 7일 수요일


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cadm_slsbbindinggeneral.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
이 Information Center는 Eclipse 기술을 기반으로 합니다(http://www.eclipse.org 웹 사이트 참조).