|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectkr.co.hit.live.delegator.EJBBizDelegator
public class EJBBizDelegator
EJBBizDelegator 는 EJB 로컬 또는 리모트 클라이언트가 간단하고 쉽게 EJB 비즈니스 메쏘드들을 호출할 수 있도록, 복잡한 EJB 메쏘드의 호출 절차를 대행하여 준다. Stateless Session Bean의 비즈니스 메쏘드 호출에 가장 잘 적용될 수 있다.
EJBBizDelegator 의 callRremoteService 또는 callLocalService 메쏘드를 이용하여 EJB 비즈니스 메쏘드를 호출하기 위해서는, 호출될 EJB Bean을 생성해 주는 로컬 또는 리모트 Home 오브젝트를 Look-Up하는데 필요한 JNDI 참조명, InitialContext 등에 대한 정보들을 제공하는 XML 형식의 구성 화일을 작성하여야 한다.
구성 화일의 내용과 형식은 다음의 DTD에 맞게 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT ejb-lookup ( ( ejb-ref | jndi-svc )* ) >
<!ELEMENT ejb-ref ( ejb-ref-name, jndi-svc-link ) >
<!ELEMENT ejb-ref-name (#PCDATA) >
<!ELEMENT jndi-svc-link (#PCDATA) >
<!ELEMENT jndi-svc ( jndi-svc-name, properties? ) >
<!ELEMENT jndi-svc-name (#PCDATA) >
<!ELEMENT properties ( comment?, entry* ) >
<!ELEMENT comment (#PCDATA) >
<!ELEMENT entry (#PCDATA) >
<!ATTLIST entry key CDATA #REQUIRED>
<ejb-ref-name> 엘리먼트는 호출될 EJB Bean을 생성해 주는 Home 오브젝트에 대한 JNDI Look-Up 참조명을 정의하는 데 사용되며, 소스 코드에서 사용되는 실제의 JNDI Look-Up 참조명에서 접두사 "java:comp/env/"를 제거하고 남는 부분만을 사용하여 작성한다.
<jndi-svc-link> 엘리먼트는 임의의 식별자를 사용하여 작성하되, 참조되는 <jndi-svc-name> 엘리먼트와 동일한 값을 갖도록 하여야 한다. <jndi-svc-link>와 <jndi-svc-name>를 이용하여 Home 오브젝트와 이를 Look-Up 하는데 사용할 JNDI 서비스간에 연결을 맺는다.
<jndi-svc-name> 등록된 JNDI 서비스를 식별하는데 사용되며, 임의의 식별자를 사용하여 정의한다.
<properties> 엘리먼트는 하위의 <entry> 엘리먼트를 사용하여 JNDI 서비스를 엑세하는데 필요한 모든 Property 정보를 정의하는데 사용된다. JNDI 서비스를 엑세하는 데 필요한 Property 정보는 이를 제공하는 벤더별로 상이하므로 해당 벤더가 제공하는 관련 매뉴얼이나 레퍼런스를 참조하도록 한다.
<entry> 엘리먼트는 key=value 형태로 각 Property를 정의한다. 'key'에 해당하는 값은 <entry> 엘리먼트의 key 어트리뷰트를 사용하여 정의하며, 'value'에 해당하는 값은 <entry> 엘리먼트의 컨텐트에 정의한다.
다음은 위의 DTD에 따라 작성된 샘플 구성화일이다.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE ejb-lookup
PUBLIC "-//Hyundai Information Technology//DTD EJB Look-Up 0.1//EN"
"live-ejb-lookup.dtd" >
<ejb-lookup>
<ejb-ref>
<ejb-ref-name>ejb/Hello</ejb-ref-name>
<jndi-svc-link>ocs</jndi-svc-link>
</ejb-ref>
<jndi-svc>
<jndi-svc-name>ocs</jndi-svc-name>
<properties>
<entry key="java.naming.factory.initial">
com.sun.enterprise.naming.SerialInitContextFactory
</entry>
<entry key="java.naming.factory.url.pkgs">
com.sun.enterprise.naming
</entry>
</properties>
</jndi-svc>
<jndi-svc>
<jndi-svc-name>erp</jndi-svc-name>
<properties>
<entry key="java.naming.factory.initial">
com.sun.enterprise.naming.SerialInitContextFactory
</entry>
<entry key="java.naming.factory.url.pkgs">
com.sun.enterprise.naming
</entry>
</properties>
</jndi-svc>
</ejb-lookup>
EJBBizDelegator 의 구성 화일명은 Configurator 의
구성화일에 live.ejb.lookup.configuration 이라는 Property 명을 사용하여 지정한다.
구성 화일명이 지정되지 않으면 디폴트 화일명으로 ejb-lookup.xml를 사용한다.
| Field Summary | |
|---|---|
protected static String |
ATTR_NAME_KEY
<key> 어트리뷰트를 파싱하기 위한 XPath 패턴 |
static String |
EJB_LOOKUP_CONFIG_PROPERTY
Configurator 로부터 구성 화일명을 얻기 위한 Property명
|
static String |
EJB_LOOKUP_DEFAULT_FILE
Configurator 에 구성 화일명이 정의되어 있지 않을 때 사용할 디폴트 구성 화일명
|
static String |
EJB_LOOKUP_MANDATORY_PROPERTY
Configurator 로부터 EJB Lookup 여부 지정값을 얻기위한 Property 명 이
Property가 true이면 사용되는 모든 EJB의 JNDI Lookup 명을 구성 화일에
등록해야하며 서비스 사용시 해당 EJB의 JNDI Lookup 명을 찾을 수 없으면 LiveException이 발생한다. |
static String |
EJB_REMOTE_RETRY_PROPERTY
callService()에서 Local Service의 경우 LocalHome의 Lookup을 실패했을
경우, 다시 RemoteHome의 Lookup을 시도할 지 여부
|
protected static Hashtable<String,String> |
ejbRefsTable
EJB Home 오브젝트들의 JNDI Look-Up 참조명 관리를 위한 Hashtable 오브젝트 |
static String |
JNDI_ENV_PREFIX
Java Servlet 스펙에서 권장하는 Home 오브젝트 JNDI Look-Up 참조명의 접두어 |
protected static Hashtable<String,Properties> |
jndiSvcsTable
JNDI 서비스들의 엑세스 Property 정보 관리를 위한 Hashtable 오브젝트 |
protected static String |
LIVE_EJBHOME_CREATE
EJB Local 또는 Remote 오브젝트를 생성하는데 사용되는 Home 오브젝트의 메소드명 |
protected static String |
LOCAL_JNDI_LOOKUP_SUFFIX
callService()에서 EJBLocalHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는
접미어 LocalHome로 지정되어 있다. |
static String |
LOCAL_JNDI_SVC_PROVIDER_PROPERTY
Configurator 로부터 local jndi-svc-name을 얻기위한 Property명
|
protected static EJBBizDelegator |
me
단일(Single) 인스턴스 패턴 구현을 위한 EJBBizDelegator 오브젝트 |
protected static String |
PATTERN_EJB_REF
<ejb-ref> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_EJB_REF_NAME
<ejb-ref-name> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_ENTRY
<entry> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_JNDI_SVC
<jndi-svc> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_JNDI_SVC_LINK
<jndi-svc-link> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_JNDI_SVC_NAME
<jndi-svc-name> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PATTERN_PROPERTIES
<properties> 엘리먼트를 파싱하기 위한 XPath 패턴 |
protected static String |
PublicId
구성 화일의 구조를 정의하는 DTD의 PUBLIC ID |
protected static String |
REMOTE_JNDI_LOOKUP_SUFFIX
callService()에서 EJBHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는 접미어
Home로 지정되어 있다. |
protected static String |
SystemId
구성 화일의 구조를 정의하는 DTD의 SYSTEM ID |
| Method Summary | |
|---|---|
Object |
callLocalService(String server,
String service)
|
Object |
callLocalService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
|
Object |
callLocalService(String server,
String service,
Object[] argValues)
|
Object |
callRemoteService(String server,
String service)
|
Object |
callRemoteService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
|
Object |
callRemoteService(String server,
String service,
Object[] argValues)
|
Object |
callService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
ejb-lookup.xml 파일에서 주어진 server 명을 사용하여 jndiSvc 명을 얻어온 후 진행한다. |
Object |
callService(String server,
String service,
Object[] argValues)
메소드 호출에 필요한 파라메터 타입 정보를 argValues로부터 생성하여 callService()를 호출한다. |
Object |
callService(String jndiSvc,
String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
주어진 jndiSvc 명을 사용하여 JNDI ServiceLocator 객체를 얻어온다. jndiSvc 명이 null인 경우에는 ejb-lookup.xml 파일에서 주어진 server 명을 사용하여 jndiSvc 명을 얻어온 후 진행한다. |
Object |
callService(String jndiSvc,
String server,
String service,
Object[] argValues)
메소드 호출에 필요한 파라메터 타입 정보를 argValues로부터 생성하여 callService()를 호출한다. |
protected static void |
configure()
XML형태의 구성 화일을 읽어들여 EJB Home 오브젝트에 대한 JNDI Look-Up 참조명은 ejbRefsTable 에 저장하며, JNDI 서비스를 엑세스 하는데 필요한 Property 정보들은
jndiSvcsTable 에 저장한다. |
Object |
dispatchMethod(Class<?> clazz,
Object obj,
String methodName,
Class<?>[] argTypes,
Object[] argValues)
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. |
Object |
dispatchMethod(Class<?> clazz,
Object obj,
String methodName,
Object[] argValues)
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. |
Object |
dispatchMethod(Object obj,
String methodName,
Class<?>[] argTypes,
Object[] argValues)
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. |
Object |
dispatchMethod(Object obj,
String methodName,
Object[] argValues)
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. |
static EJBBizDelegator |
getInstance()
EJBBizDelegator의 단일 인스턴스를 리턴한다. |
protected String |
getJndiSvc(String ejbRefName)
ejbRefsTable과 ejbRefsPatternTable을 참조하여 주어진 JNDI look-up 명의 jndi-svc-link 명를 리턴한다. ejbRefsTable을 먼저 검색하며, 없을경우 다음으로 ejbRefsPatternTable을 검색한다. |
protected javax.ejb.EJBObject |
getRemoteObject(Class<?> homeClazz,
Class<?>[] argValues)
|
protected javax.ejb.EJBObject |
getRemoteObject(Class<?> homeClazz,
Class<?>[] argTypes,
Class<?>[] argValues)
|
protected javax.ejb.EJBObject |
getRemoteObject(String jndiName,
Class<?> homeClazz,
Class<?>[] argTypes,
Object[] argValues)
|
protected javax.ejb.EJBObject |
getRemoteObject(String jndiName,
Class<?> homeClazz,
Object[] argValues)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static EJBBizDelegator me
단일(Single) 인스턴스 패턴 구현을 위한 EJBBizDelegator 오브젝트
protected static final String LIVE_EJBHOME_CREATE
EJB Local 또는 Remote 오브젝트를 생성하는데 사용되는 Home 오브젝트의 메소드명
public static final String EJB_LOOKUP_CONFIG_PROPERTY
Configurator 로부터 구성 화일명을 얻기 위한 Property명
public static final String LOCAL_JNDI_SVC_PROVIDER_PROPERTY
Configurator 로부터 local jndi-svc-name을 얻기위한 Property명
protected static final String LOCAL_JNDI_LOOKUP_SUFFIX
callService()에서 EJBLocalHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는
접미어 LocalHome로 지정되어 있다.
protected static final String REMOTE_JNDI_LOOKUP_SUFFIX
callService()에서 EJBHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는 접미어
Home로 지정되어 있다.
public static final String EJB_LOOKUP_MANDATORY_PROPERTY
Configurator 로부터 EJB Lookup 여부 지정값을 얻기위한 Property 명 이
Property가 true이면 사용되는 모든 EJB의 JNDI Lookup 명을 구성 화일에
등록해야하며 서비스 사용시 해당 EJB의 JNDI Lookup 명을 찾을 수 없으면 LiveException이 발생한다.
Property 값이 false라면 같은 경우 Local 서비스로 호출된다.
public static final String EJB_REMOTE_RETRY_PROPERTY
callService()에서 Local Service의 경우 LocalHome의 Lookup을 실패했을
경우, 다시 RemoteHome의 Lookup을 시도할 지 여부
public static final String EJB_LOOKUP_DEFAULT_FILE
Configurator 에 구성 화일명이 정의되어 있지 않을 때 사용할 디폴트 구성 화일명
public static final String JNDI_ENV_PREFIX
Java Servlet 스펙에서 권장하는 Home 오브젝트 JNDI Look-Up 참조명의 접두어
protected static final String PATTERN_EJB_REF
<ejb-ref> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_EJB_REF_NAME
<ejb-ref-name> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_JNDI_SVC_LINK
<jndi-svc-link> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_JNDI_SVC
<jndi-svc> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_JNDI_SVC_NAME
<jndi-svc-name> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_PROPERTIES
<properties> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String PATTERN_ENTRY
<entry> 엘리먼트를 파싱하기 위한 XPath 패턴
protected static final String ATTR_NAME_KEY
<key> 어트리뷰트를 파싱하기 위한 XPath 패턴
protected static final String PublicId
구성 화일의 구조를 정의하는 DTD의 PUBLIC ID
protected static final String SystemId
구성 화일의 구조를 정의하는 DTD의 SYSTEM ID
protected static Hashtable<String,String> ejbRefsTable
EJB Home 오브젝트들의 JNDI Look-Up 참조명 관리를 위한 Hashtable 오브젝트
protected static Hashtable<String,Properties> jndiSvcsTable
JNDI 서비스들의 엑세스 Property 정보 관리를 위한 Hashtable 오브젝트
| Method Detail |
|---|
protected static void configure()
XML형태의 구성 화일을 읽어들여 EJB Home 오브젝트에 대한 JNDI Look-Up 참조명은
ejbRefsTable 에 저장하며, JNDI 서비스를 엑세스 하는데 필요한 Property 정보들은
jndiSvcsTable 에 저장한다.
public static EJBBizDelegator getInstance()
EJBBizDelegator의 단일 인스턴스를 리턴한다.
EJBBizDelegator 오브젝트
public Object dispatchMethod(Object obj,
String methodName,
Object[] argValues)
throws LiveException
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. Reflection 기능을 이용한 메소드 호출에 대한 자세한
설명은 Class.getMethod() 와 Method.invoke() 에
대한 API 관련 문서를 참조한다.
dispatchMethod( null, obj, methodName, null, argValues) 를
호출하여 기능을 수행한다.
obj - 메소드 호출의 대상이 되는 오브젝트methodName - 호출할 메소드명argValues - 메소드 호출에 사용할 인자들(Arguments)
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우; obj 인자가 null 인 경우;
methodName 인자가 null 인 경우
public Object dispatchMethod(Class<?> clazz,
Object obj,
String methodName,
Object[] argValues)
throws LiveException
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. Reflection 기능을 이용한 메소드 호출에 대한 자세한
설명은 Class.getMethod() 와 Method.invoke() 에
대한 API 관련 문서를 참조한다.
dispatchMethod( clazz, obj, methodName, null, argValues) 를
호출하여 기능을 수행한다.
clazz - 메소드 Reflection에 사용할 Class 오브젝트obj - 메소드 호출의 대상이 되는 오브젝트methodName - 호출할 메소드명argValues - 메소드 호출에 사용할 인자들(Arguments)
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우 obj 인자가 null 인 경우;
methodName 인자가 null 인 경우
public Object dispatchMethod(Object obj,
String methodName,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. Reflection 기능을 이용한 메소드 호출에 대한 자세한
설명은 Class.getMethod() 와 Method.invoke() 에
대한 API 관련 문서를 참조한다.
dispatchMethod( null, obj, methodName, argTypes, argValues)
를 호출하여 기능을 수행한다.
obj - 메소드 호출의 대상이 되는 오브젝트methodName - 호출할 메소드명argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들argValues - 메소드 호출에 사용할 인자들
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우 obj 인자가 null 인 경우;
methodName 인자가 null 인 경우
public Object dispatchMethod(Class<?> clazz,
Object obj,
String methodName,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. Reflection 기능을 이용한 메소드 호출에 대한 자세한
설명은 Class.getMethod() 와 Method.invoke() 에
대한 API 관련 문서를 참조한다.
메소드 Reflection을 적용할 clazz인자가 null인 경우에는 obj 인자의 getClass()
메소드를 호출하여 얻은 Class 오브젝트가 사용된다.
argValues가 null이 아닌데, argTypes가 null인 경우에는 argValues에 들어 있는 각 오브젝트의
getClass() 메소드를 호출하여 얻은 Class 오브젝트가 사용된다.
clazz - 메소드 Reflection의 사용할 Class 오브젝트obj - 메소드 호출의 대상이 되는 오브젝트methodName - 호출할 메소드명argTypes - 메소드 호출에 사용할 인자들의 타입들argValues - 메소드 호출에 사용할 인자들
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우 obj 인자가 null 인 경우;
methodName 인자가 null 인 경우
protected javax.ejb.EJBObject getRemoteObject(Class<?> homeClazz,
Class<?>[] argValues)
throws LiveException
homeClazz - argValues -
LiveException
protected javax.ejb.EJBObject getRemoteObject(Class<?> homeClazz,
Class<?>[] argTypes,
Class<?>[] argValues)
throws LiveException
homeClazz - argTypes - argValues -
LiveException
protected javax.ejb.EJBObject getRemoteObject(String jndiName,
Class<?> homeClazz,
Object[] argValues)
throws LiveException
jndiName - homeClazz - argValues -
LiveException
protected javax.ejb.EJBObject getRemoteObject(String jndiName,
Class<?> homeClazz,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
jndiName - homeClazz - argTypes - argValues -
LiveException
public Object callRemoteService(String server,
String service)
throws LiveException
server - service -
LiveException
public Object callRemoteService(String server,
String service,
Object[] argValues)
throws LiveException
server - service - argValues -
LiveException
public Object callRemoteService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
server - service - argTypes - argValues -
LiveException
public Object callLocalService(String server,
String service)
throws LiveException
server - service -
LiveException
public Object callLocalService(String server,
String service,
Object[] argValues)
throws LiveException
server - service - argValues -
LiveException
public Object callLocalService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
server - service - argTypes - argValues -
LiveException
public Object callService(String server,
String service,
Object[] argValues)
throws LiveException
callService()를 호출한다.
server - service - argValues -
LiveException
public Object callService(String jndiSvc,
String server,
String service,
Object[] argValues)
throws LiveException
callService()를 호출한다.
jndiSvc - server - service - argValues -
LiveException
public Object callService(String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
ejb-lookup.xml 파일에서 주어진 server 명을 사용하여 jndiSvc 명을 얻어온 후 진행한다.
LOCAL_JNDI_SVC_PROVIDER_PROPERTY를 키로 얻어온 local
jndi-svc-link 명과 앞서 설명한 jndiSvc 명을 비교하여 Local 또는 Remote 호출을 수행한다.
두 개의 이름이 같을 경우 Local 호출을 하며 이때에는 server명 뒤에
LOCAL_JNDI_LOOKUP_SUFFIX 접미사를 추가하여 Local Home 오브젝트를
lookup 한다. 두 개의 이름이 서로 다를 경우 Remote 호출을 수행하며 이 경우 server명 뒤에
REMOTE_JNDI_LOOKUP_SUFFIX 접미사를 추가하여 Remote Home 오브젝트를
lookup 한다.
사용자는 EJB의 Deployment Descriptor 파일에 JNDI 참조명을 지정할 때 반드시 Local Lookup 명과
Remote Lookup 명을 모두 등록해야 하며 이때 Local Lookup 명은 LocalHome 접미사로 이름이 끝나야 하며,
Remote Lookup 명은 Home 접미사로 이름이 끝나도록 한다.
ejb-lookup.xml 파일에 ejb 명을 등록할 때에는 위 접미사 부분을 제외한 이름으로 등록하도록 하며
callService()를 호출할 경우에도 접미사 부분을 제외한 이름을 사용해야 한다.
server - 서비스를 호출할 EJB의 Lookup 명service - 호출할 메소드 명argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들argValues - 메소드 호출에 사용할 인자들(Arguments)
LiveException - server 나 service 파라메터가 null 일 경우; 구성파일에서 server의 Lookup 명을 찾지
못할 경우; 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우
public Object callService(String jndiSvc,
String server,
String service,
Class<?>[] argTypes,
Object[] argValues)
throws LiveException
주어진 jndiSvc 명을 사용하여 JNDI ServiceLocator 객체를 얻어온다. jndiSvc 명이 null인 경우에는 ejb-lookup.xml 파일에서 주어진 server 명을 사용하여 jndiSvc 명을 얻어온 후 진행한다.
LOCAL_JNDI_SVC_PROVIDER_PROPERTY를 키로 얻어온 local
jndi-svc-link 명과 앞서 설명한 jndiSvc 명을 비교하여 Local 또는 Remote 호출을 수행한다.
두 개의 이름이 같을 경우 Local 호출을 하며 이때에는 server명 뒤에
LOCAL_JNDI_LOOKUP_SUFFIX 접미사를 추가하여 Local Home 오브젝트를
lookup 한다. 두 개의 이름이 서로 다를 경우 Remote 호출을 수행하며 이 경우 server명 뒤에
REMOTE_JNDI_LOOKUP_SUFFIX 접미사를 추가하여 Remote Home 오브젝트를
lookup 한다.
사용자는 EJB의 Deployment Descriptor 파일에 JNDI 참조명을 지정할 때 반드시 Local Lookup 명과
Remote Lookup 명을 모두 등록해야 하며 이때 Local Lookup 명은 LocalHome 접미사로 이름이 끝나야 하며,
Remote Lookup 명은 Home 접미사로 이름이 끝나도록 한다.
ejb-lookup.xml 파일에 ejb 명을 등록할 때에는 위 접미사 부분을 제외한 이름으로 등록하도록 하며
callService()를 호출할 경우에도 접미사 부분을 제외한 이름을 사용해야 한다.
jndiSvc - 서비스를 lookup할 JNDI 서비스 프로퍼티 명(ejb-lookup.xml 파일의 <jndi-svc>로
등록된 이름 중 하나server - 서비스를 호출할 EJB의 Lookup 명service - 호출할 메소드 명argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들argValues - 메소드 호출에 사용할 인자들(Arguments)
LiveException - server 나 service 파라메터가 null 일 경우; 구성파일에서 server의 Lookup 명을 찾지
못할 경우; 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서
Exception이 발생된 경우
protected String getJndiSvc(String ejbRefName)
throws LiveException
ejbRefsTable과 ejbRefsPatternTable을 참조하여 주어진 JNDI look-up 명의 jndi-svc-link
명를 리턴한다. ejbRefsTable을 먼저 검색하며, 없을경우 다음으로 ejbRefsPatternTable을 검색한다.
ejbRefsPatternTable에서 해당되는 Pattern이 발견되었다면 그 JNDI look-up 명을
ejbRefsTable에 등록해 놓아 다음번 lookup 시 ejbRefsTable에서 검색될 수 있도록 한다. 검색된
jndi-svc-link 명이 없을 경우 EJB_LOOKUP_MANDATORY_PROPERTY가
true로 세팅되어 있으면 LiveException을 throw하며, false로 세팅되어 있으면 null을 리턴한다.
현재 ejbRefsPatternTable 부분은 구현되지 않았다.
ejbRefName - 검색하고자 하는 ejb-ref 명
LiveException - EJB_LOOKUP_MANDATORY_PROPERTY가 true로 세팅되어 있을
때 jnid-svc-link 명이 발견되지 않은 경우
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||