서버 구성 파일에서 동적 값에 대해 JNDI 바인딩 사용

Liberty 프로파일에서 jndiReferenceEntry 요소를 사용하여 서버 구성 파일에서 기본 JNDI(Java™ Naming and Directory Interface) 네임스페이스로 동적 값 참조를 바인드할 수 있습니다.

이 태스크 정보

기본 JNDI 네임스페이스는 Liberty에서 사용 가능하며 애플리케이션에 필요한 기타 오브젝트에 대해 바인딩을 제공합니다. 서버에서 사용되는 기능을 기반으로 사전 정의된 오브젝트 세트를 기본 JNDI 네임스페이스로 바인드할 수 있습니다. 또한 리턴하는 값을 동적으로 결정하는 오브젝트 팩토리에 대한 참조를 바인드할 수 있습니다. 또한 이 오브젝트 팩토리를 사용하여 사용자 정의 오브젝트 유형을 애플리케이션에 리턴할 수도 있습니다.

JNDI 이름 지정에 대한 자세한 정보는 이름 지정을 참조하십시오.

프로시저

  1. jndi-1.0 Liberty 기능을 server.xml 파일에 추가하십시오.
    <featureManager>
       <feature>jndi-1.0</feature>
    </featureManager>
  2. 프로그래밍 방식으로 정의된 값을 리턴하는 ObjectFactory 클래스를 작성하십시오.
    import javax.naming.spi.ObjectFactory;
    
    public class MyObjectFactory implements ObjectFactory {
      @Override
      public Object getObjectInstance(Object o, Name n, Context c, Hashtable<?, ?> envmt) throws Exception { 
        Properties p = new Properties();
        p.put("abc", 123);
        return p; 
      }
    }    
  3. server.xml 파일의 library 요소에 ObjectFactory를 포함시키십시오.
    <library id="objectFactoryLib"> 
       <fileset dir="${server.config.dir}/lib" includes="factory.jar"/>   
    	</library>
  4. server.xml 파일의 jndiObjectFactory 요소에 팩토리를 선언하고 이전에 선언한 라이브러리를 참조하십시오.
    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"/>

    또한 팩토리가 리턴하는 오브젝트의 유형을 선언할 수 있습니다. 유형은 javax.naming.Context.list() 메소드가 리턴합니다.

    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"                      
             objectClassName="java.util.Properties"/>
  5. server.xml 파일의 jndiReferenceEntry 요소에 항목을 선언하고 이전에 선언한 팩토리를 참조하십시오.
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"/>
  6. server.xml 파일의 jndiReferenceEntry 요소에 대해 더 많은 특성을 선언하려면 다음을 수행하십시오.
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"> 
       <properties abc="123"/>   
    </jndiReferenceEntry>

    이러한 추가 특성은 팩토리로 전달된 javax.naming.Reference에서 javax.naming.StringRefAddr로 표시됩니다.

    import javax.naming.spi.ObjectFactory; 
    
    public class MyObjectFactory implements ObjectFactory { 
      @Override
      public Object getObjectInstance(Object o, Name n, Context c, Hashtable<?, ?> envmt) throws Exception {
        Properties p = new Properties();           
        Reference ref = (Reference) o;
        RefAddr refAddr = ref.get("abc"); 
        p.put("abc", refAddr == null ? 123 : refAddr.getContent()); 
        return p; 
      }   
    }
  7. 자원 환경 참조를 사용하여 애플리케이션에 결과 오브젝트를 삽입할 수 있습니다.
    @Resource(name="ref/entry")
    private Properties properties;

주제의 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_jndi_refentry
파일 이름: twlp_dep_jndi_refentry.html