2013-02-12 14 views
1

이 독립 실행 형 (서버가 필요 없음) JNDI InitialContext 조회가 작동하도록하려고합니다. 내가 읽고 내가 아마 제대로 내 컨텍스트를 설정하지 않은,조회를 수행 할 때 클래스 com.sun.enterprise.naming.SerialInitContextFactory를 인스턴스화 할 수 없습니다.

try { 
    Hashtable <String, String> env = new Hashtable<String, String>(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, 
      "com.sun.enterprise.naming.SerialInitContextFactory"); 
    env.put(Context.PROVIDER_URL,"localhost:1099"); 
    env.put("java:comp/env/jms/RNCQueueConnectionFactory", 
      "javax.jms.QueueConnectionFactory"); 
    env.put("Big", "Data"); 
    Context jndiContext = new InitialContext(env); 
    jndiContext.lookup("java:comp/env/jms/RNCQueueConnectionFactory"); 
    testval = (String) jndiContext.lookup("Big"); 
} catch (NamingException ne) { 
    System.out.println(ne.getMessage()); 
} 

나에게로부터 com.sun.enterprise.naming.SerialInitContextFactory :

클래스의 인스턴스를 할 수 없습니다 :이 예외를 얻고있다 . 누구나 독립형 JNDI를 성공적으로 설정 했습니까?

+0

병이 없을 수도 있습니다. 왜 'com.sun.enterprise.naming.SerialInitContextFactory'를 사용하고 있습니까? – emeraldjava

+0

관련 웹 페이지의 코드 예제에서이 코드를 보았습니다. 독립 실행 형 JNDI 조회 상황에서 사용할 수 있다고 생각했습니다. 나는 그것을 시도해 볼 것이라고 생각했다. – user1555132

답변

0

JNDI는 이름 지정 및 디렉토리 서비스에 액세스하는 API입니다. The JNDI Tutorial을 통해 API를 빠르게 익히고 작동 방법을 익힐 수 있습니다.

API로서 JNDI는 작동하려면 구현이 필요합니다. 특별한 경우에는 com.sun.enterprise.naming.SerialInitContextFactory 클래스의 항아리가 필요합니다. jar 파일이 무엇인지 파악한 후에는 CLASSPATH에 추가하고 응용 프로그램을 다시 실행해야합니다.

JNDI 서비스에 액세스하는 데 필요한 것은 아니지만 최소한 초기 오류를 지나칠 수 있습니다. 기사 및 The JNDI Tutorial을 참조하십시오.

+0

안녕하세요. Jacek, 제 질문에 답변 해 주셔서 감사합니다. 어제 제가 게시 한 후에 당신이 언급 한 튜토리얼을 읽었습니다. 조사가 끝나면 com.sun.jndi.fscontext.RefFSContextFactory를 사용했습니다. jar 파일 fscontext.jar에 정의됩니다. 이 속성을 파일에 넣어야 할 수도 있습니다. 그러나, 이제 항아리에있는 방법을 찾고 있습니다. 내 코드를 약간 수정했다. 이제 다음과 같이 보입니다. – user1555132

+0

Jacek, JNDI에 대한 자습서에서 조사한 후 com.sun.jndi.fscontext.RefFSContextFactory.I을 사용하여 코드를 약간 수정했습니다. { 해시 테이블 env = new Hashtable (); env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); \t env.put ("java : comp/env/jms/RNCQueueConnectionFactory", "javax.jms.QueueConnectionFactory"); env.put ("Fish", "AndChips"); 컨텍스트 jndiContext = 새로운 InitialContext (env); testval = (String) jndiContext.lookup ("Fish"); \t } catch (NamingException ne) {\t \t ne.printStackTrace(); } – user1555132

+0

javax.naming.NameNotFoundException : 생선 atcom.sun.jndi.fscontext.RefFSContext.getObjectFromBindings (RefFSContext.java:400) atcom.sun.jndi.fscontext.RefFSContext.lookupObject (RefFSContext.java:327) 에서 com.sun.jndi.fscontext.RefFSContext.lookup (RefFSContext.java:146) com.sun.jndi.fscontext.FSContext.lookup (FSContext.java:127) at javax.naming.InitialContext.lookup (알 수없는 소스) sun.reflect.NativeMethodAccessorImpl.invoke에서 sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법) 에서 gov.hhs.cms.rnc.SampleRNCTest2.testRNC (SampleRNCTest2.java:63) (알 수없는 소스) 에서 일에 .비추다.Delegatin – user1555132

0

동일한 문제가있었습니다. Maven 프로젝트에서 작업 중이고 다음 종속성을 추가했습니다.

 <dependency> 
      <groupId>org.glassfish.main.common</groupId> 
      <artifactId>glassfish-naming</artifactId> 
      <version>4.1.1</version> 
     </dependency> 
관련 문제