EJB 제공자를 사용하면 WSIF 클라이언트는 RMI/IIOP(Remote Method Invocation
over Internet Inter-ORB Protocol)를 통해 엔터프라이즈 Bean을 호출할 수 있습니다.
이 정보와 연관된 코드 단편을 사용하면 엔터프라이즈 Bean으로 구현된
서비스에 WSIF 서비스를 링크하는 WSDL(Web Services Description Language)
확장을 작성할 수 있습니다.
시작하기 전에
EJB(IIOP) 기반 웹 서비스 호출에 대한 EJB 제공자를 사용할 수 있어도
대신 JAX-RPC를
사용하여 RMI-IIOP 웹 서비스를 호출하도록
권장합니다.
EJB 클라이언트 JAR 파일은 현재 제공자를 포함하는
클라이언트 런타임 환경에 사용 가능해야 합니다.
EJB
제공자는 WSIF 동기 제한시간을 지원하지 않습니다. EJB 제공자는
Java™ 메소드 완료 제한시간을 종료하지 않습니다.
이 태스크 정보
WSIF 클라이언트는 현재 보안 및 트랜잭션 컨텍스트를 통해
RMI-IIOP를 사용하여 엔터프라이즈 Bean을 호출할 수 있습니다. EJB 제공자가
트랜잭션 내에서 호출되는 경우,
트랜잭션은 전방 서비스로 전달되며 표준 EJB 트랜잭션 속성이 적용됩니다.
서비스의 여러 구현이 있는 경우
모든 구현이 동일한 의미를 제공하도록 하는 것은 서비스 제공자에
달려 있습니다.
예를 들어, 트랜잭션의 경우 Bean 배치자는 새 트랜잭션을 강제 실행하려면
TX_REQUIRES_NEW를 지정해야 합니다.
다음 프로시저
및 연관된 코드 단편을 사용하여
WSIF 서비스에서 엔터프라이즈 Bean을 호출하도록 하는
WSDL(Web Services Description Language) 확장을 작성할 수 있습니다.
프로시저
- EJB 바인딩을 지정하십시오.
<!-- EJB binding -->
<binding .... >
<ejb:binding />
<format:typeMapping style="Java" encoding="Java"/>?
<format:typeMap name="qname" formatType="nmtoken"/>*
</format:typeMapping>
<operation>*
<ejb:operation
methodName="nmtoken"
parameterOrder="nmtoken"
returnPart="nmtoken"?
interface="remote|home" />
<input name="nmtoken"? />?
<output name="nmtoken"? />?
<fault name="nmtoken"? />?
</operation>
</binding>
이 예제에서:
- 물음표(?)는 선택사항을
의미하고 별표(*)는 0 이상을 의미합니다.
- <format:typeMap> 요소의 name 속성은
EJB 조작 중 하나에서 사용하는 단순 또는 복합 유형의 규정된 이름입니다.
- <format:typeMap> 요소의 formatType 속성은
name 맵에 의해 지정된 요소가 맵핑하는 Java 클래스의
완전한 클래스 이름입니다.
- <ejb:operation> 요소의 methodName 속성은
조작으로 호출되는 엔터프라이즈 Bean에 대한 메소드의 이름입니다.
- <ejb:operation> 요소의 parameterOrder 속성에는
EJB 메소드에 전달되는 순서를 정의하는 공백으로 구분된 파트 이름 목록이
포함되어 있습니다.
- <ejb:operation> 요소의 interface 속성은
remote 또는 home 중 하나로 설정해야 합니다.
이 값은 methodName 속성으로 이름 지정된 메소드인
Enterprise Bean의 인터페이스를 지정합니다.
- <ejb:address> 요소를 지정하십시오.
<service ... >
<port>*
<ejb:address
className="nmtoken"
jndiName="nmtoken"
initialContextFactory="nmtoken" ?
jndiProviderURL="nmtoken" ? />
</port>
</service>
이 예제에서:
- <ejb:address> 요소의 className 속성은
엔터프라이즈 Bean의 홈 인터페이스 클래스에 대해 완전한
클래스 이름을 지정합니다.
- <ejb:address> 요소의 jndiName 속성은
엔터프라이즈 Bean을 찾는 데 사용되는 완전한 JNDI(Java Naming and Directory Interface)
이름을 지정합니다.
- <ejb:address> 요소의 initialContextFactory 속성은
선택사항이며 초기 컨텍스트 팩토리 클래스를 지정합니다.
- <ejb:address> 요소의 jndiProviderURL 속성은
선택사항이며 JNDI 제공자 웹 주소를 지정합니다.