2012-11-07 2 views
0

IAM이 JNDI를 사용하여 mysql에 연결하려고합니다. 그러나 예외를 보여JNDI를 사용하는 javax.naming.NoInitialContextException

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:

참조 내 코드 :

VendorDataSource vds = new VendorDataSource(); 
    vds.setServerName("localhost"); 
    vds.setDatabaseName("jnditest"); 
    vds.setDescription("The data source for inventory and personnel"); 

    try { 
      ctx = new InitialContext(); 
     ctx.bind("jdbc/myds", vds); 

    } catch (NamingException e1) { 

     e1.printStackTrace(); 
    } 

    try { 
     ctx = new InitialContext(); 
     DataSource ds = (DataSource)ctx.lookup("jdbc/myds"); 
     Connection conn = ds.getConnection("root", "password"); 

    } catch (NamingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

그리고 오류 메시지 :

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) 
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) 
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source) 
    at javax.naming.InitialContext.bind(Unknown Source) 
    at samplemariadb.DataSourceConnectivity.main(DataSourceConnectivity.java:33) 

답변

0

가 보통이 곳에서의 InitialContext를 얻는 방법 지정해야합니다 (그리고 사용할 jndi 트리가있는 곳)

You

Hashtable env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "<initialContextFactory>"); 
env.put(Context.PROVIDER_URL, "<url>"); 
env.put(Context.SECURITY_PRINCIPAL, "<user>"); 
env.put(Context.SECURITY_CREDENTIALS, "<password>"); 
ctx = new InitialContext(env); 

을하거나 jndi.properties를 작성하고 클래스 경로에 배치 : 두 가지 방법으로 그것을 할 수는 불평 귀하의 경우에는

java.naming.factory.initial=<initialContextFactory> 
java.naming.provider.url=<url> 
java.naming.security.principal=<user> 
java.naming.security.credentials=<password> 

때문에 어떤에 따라 INITIAL_CONTEXT_FACTORY의 부족 (사용중인 Java EE 서버).

희망 하시겠습니까?

+0

이 방법도 시도해보십시오. 그러나 사이트에서 fscontext.jar 파일을 다운로드 할 수 없습니다. fscontext.jar 파일을 다운로드 할 수있는 적절한 경로를 제공 할 수 있습니까? – Haseena

+0

필자가 알고있는 한, Java Web Services Developer Pack (http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-jwsdp-419428.html)에 포함되어 있지만 그게 당신이 필요한지 확실하지 않습니다. – richardtz

관련 문제