kr.co.hit.live.delegator
Class EJBBizDelegator

java.lang.Object
  extended by kr.co.hit.live.delegator.EJBBizDelegator

public class EJBBizDelegator
extends Object

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를 사용한다.

Since:
Live 0.1
Version:
$Revision: 1.1 $ $Date: 2006/09/26 08:20:16 $
Author:
김광영

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

me

protected static EJBBizDelegator me

단일(Single) 인스턴스 패턴 구현을 위한 EJBBizDelegator 오브젝트


LIVE_EJBHOME_CREATE

protected static final String LIVE_EJBHOME_CREATE

EJB Local 또는 Remote 오브젝트를 생성하는데 사용되는 Home 오브젝트의 메소드명

See Also:
Constant Field Values

EJB_LOOKUP_CONFIG_PROPERTY

public static final String EJB_LOOKUP_CONFIG_PROPERTY

Configurator 로부터 구성 화일명을 얻기 위한 Property명

See Also:
Constant Field Values

LOCAL_JNDI_SVC_PROVIDER_PROPERTY

public static final String LOCAL_JNDI_SVC_PROVIDER_PROPERTY

Configurator 로부터 local jndi-svc-name을 얻기위한 Property명

See Also:
Constant Field Values

LOCAL_JNDI_LOOKUP_SUFFIX

protected static final String LOCAL_JNDI_LOOKUP_SUFFIX

callService()에서 EJBLocalHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는 접미어 LocalHome로 지정되어 있다.

See Also:
Constant Field Values

REMOTE_JNDI_LOOKUP_SUFFIX

protected static final String REMOTE_JNDI_LOOKUP_SUFFIX

callService()에서 EJBHome 을 lookup 할때 JNDI 참조명 뒤에 추가하는 접미어 Home로 지정되어 있다.

See Also:
Constant Field Values

EJB_LOOKUP_MANDATORY_PROPERTY

public static final String EJB_LOOKUP_MANDATORY_PROPERTY

Configurator 로부터 EJB Lookup 여부 지정값을 얻기위한 Property 명 이 Property가 true이면 사용되는 모든 EJB의 JNDI Lookup 명을 구성 화일에 등록해야하며 서비스 사용시 해당 EJB의 JNDI Lookup 명을 찾을 수 없으면 LiveException이 발생한다. Property 값이 false라면 같은 경우 Local 서비스로 호출된다.

See Also:
Constant Field Values

EJB_REMOTE_RETRY_PROPERTY

public static final String EJB_REMOTE_RETRY_PROPERTY

callService()에서 Local Service의 경우 LocalHome의 Lookup을 실패했을 경우, 다시 RemoteHome의 Lookup을 시도할 지 여부

See Also:
Constant Field Values

EJB_LOOKUP_DEFAULT_FILE

public static final String EJB_LOOKUP_DEFAULT_FILE

Configurator 에 구성 화일명이 정의되어 있지 않을 때 사용할 디폴트 구성 화일명

See Also:
Constant Field Values

JNDI_ENV_PREFIX

public static final String JNDI_ENV_PREFIX

Java Servlet 스펙에서 권장하는 Home 오브젝트 JNDI Look-Up 참조명의 접두어

See Also:
Constant Field Values

PATTERN_EJB_REF

protected static final String PATTERN_EJB_REF

<ejb-ref> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_EJB_REF_NAME

protected static final String PATTERN_EJB_REF_NAME

<ejb-ref-name> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_JNDI_SVC_LINK

protected static final String PATTERN_JNDI_SVC_LINK

<jndi-svc-link> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_JNDI_SVC

protected static final String PATTERN_JNDI_SVC

<jndi-svc> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_JNDI_SVC_NAME

protected static final String PATTERN_JNDI_SVC_NAME

<jndi-svc-name> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_PROPERTIES

protected static final String PATTERN_PROPERTIES

<properties> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PATTERN_ENTRY

protected static final String PATTERN_ENTRY

<entry> 엘리먼트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

ATTR_NAME_KEY

protected static final String ATTR_NAME_KEY

<key> 어트리뷰트를 파싱하기 위한 XPath 패턴

See Also:
Constant Field Values

PublicId

protected static final String PublicId

구성 화일의 구조를 정의하는 DTD의 PUBLIC ID

See Also:
Constant Field Values

SystemId

protected static final String SystemId

구성 화일의 구조를 정의하는 DTD의 SYSTEM ID

See Also:
Constant Field Values

ejbRefsTable

protected static Hashtable<String,String> ejbRefsTable

EJB Home 오브젝트들의 JNDI Look-Up 참조명 관리를 위한 Hashtable 오브젝트


jndiSvcsTable

protected static Hashtable<String,Properties> jndiSvcsTable

JNDI 서비스들의 엑세스 Property 정보 관리를 위한 Hashtable 오브젝트

Method Detail

configure

protected static void configure()

XML형태의 구성 화일을 읽어들여 EJB Home 오브젝트에 대한 JNDI Look-Up 참조명은 ejbRefsTable 에 저장하며, JNDI 서비스를 엑세스 하는데 필요한 Property 정보들은 jndiSvcsTable 에 저장한다.


getInstance

public static EJBBizDelegator getInstance()

EJBBizDelegator의 단일 인스턴스를 리턴한다.

Returns:
EJBBizDelegator 오브젝트

dispatchMethod

public Object dispatchMethod(Object obj,
                             String methodName,
                             Object[] argValues)
                      throws LiveException

Reflection 기능을 사용하여 메쏘드를 호출하고 결과를 리턴한다. Reflection 기능을 이용한 메소드 호출에 대한 자세한 설명은 Class.getMethod()Method.invoke() 에 대한 API 관련 문서를 참조한다.

dispatchMethod( null, obj, methodName, null, argValues) 를 호출하여 기능을 수행한다.

Parameters:
obj - 메소드 호출의 대상이 되는 오브젝트
methodName - 호출할 메소드명
argValues - 메소드 호출에 사용할 인자들(Arguments)
Returns:
메소드 호출의 결과
Throws:
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우; obj 인자가 null 인 경우; methodName 인자가 null 인 경우

dispatchMethod

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) 를 호출하여 기능을 수행한다.

Parameters:
clazz - 메소드 Reflection에 사용할 Class 오브젝트
obj - 메소드 호출의 대상이 되는 오브젝트
methodName - 호출할 메소드명
argValues - 메소드 호출에 사용할 인자들(Arguments)
Returns:
메소드 호출의 결과
Throws:
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우 obj 인자가 null 인 경우; methodName 인자가 null 인 경우

dispatchMethod

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) 를 호출하여 기능을 수행한다.

Parameters:
obj - 메소드 호출의 대상이 되는 오브젝트
methodName - 호출할 메소드명
argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들
argValues - 메소드 호출에 사용할 인자들
Returns:
메소드 호출의 결과
Throws:
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우 obj 인자가 null 인 경우; methodName 인자가 null 인 경우

dispatchMethod

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 오브젝트가 사용된다.

Parameters:
clazz - 메소드 Reflection의 사용할 Class 오브젝트
obj - 메소드 호출의 대상이 되는 오브젝트
methodName - 호출할 메소드명
argTypes - 메소드 호출에 사용할 인자들의 타입들
argValues - 메소드 호출에 사용할 인자들
Returns:
메소드 호출의 결과
Throws:
LiveException - 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우 obj 인자가 null 인 경우; methodName 인자가 null 인 경우

getRemoteObject

protected javax.ejb.EJBObject getRemoteObject(Class<?> homeClazz,
                                              Class<?>[] argValues)
                                       throws LiveException
Parameters:
homeClazz -
argValues -
Returns:
EJBObject
Throws:
LiveException

getRemoteObject

protected javax.ejb.EJBObject getRemoteObject(Class<?> homeClazz,
                                              Class<?>[] argTypes,
                                              Class<?>[] argValues)
                                       throws LiveException
Parameters:
homeClazz -
argTypes -
argValues -
Returns:
EJBObject
Throws:
LiveException

getRemoteObject

protected javax.ejb.EJBObject getRemoteObject(String jndiName,
                                              Class<?> homeClazz,
                                              Object[] argValues)
                                       throws LiveException
Parameters:
jndiName -
homeClazz -
argValues -
Returns:
EJBObject
Throws:
LiveException

getRemoteObject

protected javax.ejb.EJBObject getRemoteObject(String jndiName,
                                              Class<?> homeClazz,
                                              Class<?>[] argTypes,
                                              Object[] argValues)
                                       throws LiveException
Parameters:
jndiName -
homeClazz -
argTypes -
argValues -
Returns:
EJBObject
Throws:
LiveException

callRemoteService

public Object callRemoteService(String server,
                                String service)
                         throws LiveException
Parameters:
server -
service -
Returns:
Object
Throws:
LiveException

callRemoteService

public Object callRemoteService(String server,
                                String service,
                                Object[] argValues)
                         throws LiveException
Parameters:
server -
service -
argValues -
Returns:
Object
Throws:
LiveException

callRemoteService

public Object callRemoteService(String server,
                                String service,
                                Class<?>[] argTypes,
                                Object[] argValues)
                         throws LiveException
Parameters:
server -
service -
argTypes -
argValues -
Returns:
Object
Throws:
LiveException

callLocalService

public Object callLocalService(String server,
                               String service)
                        throws LiveException
Parameters:
server -
service -
Returns:
Object
Throws:
LiveException

callLocalService

public Object callLocalService(String server,
                               String service,
                               Object[] argValues)
                        throws LiveException
Parameters:
server -
service -
argValues -
Returns:
Object
Throws:
LiveException

callLocalService

public Object callLocalService(String server,
                               String service,
                               Class<?>[] argTypes,
                               Object[] argValues)
                        throws LiveException
Parameters:
server -
service -
argTypes -
argValues -
Returns:
Object
Throws:
LiveException

callService

public Object callService(String server,
                          String service,
                          Object[] argValues)
                   throws LiveException
메소드 호출에 필요한 파라메터 타입 정보를 argValues로부터 생성하여 callService()를 호출한다.

Parameters:
server -
service -
argValues -
Returns:
Object
Throws:
LiveException

callService

public Object callService(String jndiSvc,
                          String server,
                          String service,
                          Object[] argValues)
                   throws LiveException
메소드 호출에 필요한 파라메터 타입 정보를 argValues로부터 생성하여 callService()를 호출한다.

Parameters:
jndiSvc -
server -
service -
argValues -
Returns:
Throws:
LiveException

callService

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()를 호출할 경우에도 접미사 부분을 제외한 이름을 사용해야 한다.

Parameters:
server - 서비스를 호출할 EJB의 Lookup 명
service - 호출할 메소드 명
argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들
argValues - 메소드 호출에 사용할 인자들(Arguments)
Returns:
Object 메소드 호출 결과
Throws:
LiveException - server 나 service 파라메터가 null 일 경우; 구성파일에서 server의 Lookup 명을 찾지 못할 경우; 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우

callService

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()를 호출할 경우에도 접미사 부분을 제외한 이름을 사용해야 한다.

Parameters:
jndiSvc - 서비스를 lookup할 JNDI 서비스 프로퍼티 명(ejb-lookup.xml 파일의 <jndi-svc>로 등록된 이름 중 하나
server - 서비스를 호출할 EJB의 Lookup 명
service - 호출할 메소드 명
argTypes - 메소드 호출에 사용할 인자들의(Arguments) 타입들
argValues - 메소드 호출에 사용할 인자들(Arguments)
Returns:
Object 메소드 호출 결과
Throws:
LiveException - server 나 service 파라메터가 null 일 경우; 구성파일에서 server의 Lookup 명을 찾지 못할 경우; 메소드 Reflection이나 호출 시에 Exception이 발생된 경우; 호출된 메소드에서 Exception이 발생된 경우

getJndiSvc

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 부분은 구현되지 않았다.

Parameters:
ejbRefName - 검색하고자 하는 ejb-ref 명
Returns:
String 검색된 jndi-svc-link 명, 검색되지 않은 경우에는 null을 리턴
Throws:
LiveException - EJB_LOOKUP_MANDATORY_PROPERTY가 true로 세팅되어 있을 때 jnid-svc-link 명이 발견되지 않은 경우


Copyright © 2014. All Rights Reserved.