2014-06-23 1 views
0

나는 connect with a database connection pool에 노력하고있어 :콘솔 프로그램 용 JNDI 연결 풀링?

[email protected]:~$ 
[email protected]:~$ java -jar NetBeansProjects/Dialer/dist/Dialer.jar 
hello world 
Jun 23, 2014 1:04:39 AM net.bounceme.dur.Dialer <init> 
INFO: {dur.reports.db.jndi.name=jdbc/vehicles, dur.db.jndi.name=jdbc/vehicles, dur.reports.db.type=MYSQL, reports.exportRawData=true, dur.db.type=MYSQL} 
Jun 23, 2014 1:04:39 AM net.bounceme.dur.Dialer <init> 
SEVERE: null 
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(NamingManager.java:662) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307) 
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:344) 
    at javax.naming.InitialContext.lookup(InitialContext.java:411) 
    at net.bounceme.dur.Connector.<init>(Connector.java:15) 
    at net.bounceme.dur.Dialer.<init>(Dialer.java:19) 
    at net.bounceme.dur.Dialer.main(Dialer.java:26) 

[email protected]:~$ 

가 나는 콘솔 응용 프로그램 풀링 JNDI와 연결을 사용하는 것이 가능하다고 생각, 톰캣, 글래스 피시 또는 유사한없이?

package net.bounceme.dur; 

import java.sql.SQLException; 
import java.util.Properties; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.sql.DataSource; 

public class Connector { 


    public Connector(Properties props) throws NamingException, SQLException { 
     InitialContext ctx = new InitialContext(); 
     //ctx.lookup(null); //???????? 
     DataSource ds = (DataSource) ctx.lookup(props.getProperty("dur.db.jndi.name")); 
    } 

} 

아니면 어떤 종류의 서버 또는 컨테이너를 사용해야합니까?

답변

1

명명 서비스 가져 오기 및 DataSource (풀에서 연결 포함)은 컨테이너 기반 서비스입니다. 이것이이 예외를받는 이유입니다 (제공 할 수있는 서비스가 없기 때문에 IntialContext을 사용할 수 없습니다). 이러한 서비스를 제공하려면 일종의 컨테이너가 필요합니다.

언제든지 자신 만의 연결 풀 논리를 작성할 수 있지만 처음부터 그렇게 할 것입니다.

또한 원격 서버에 연결하여 InitialContext 및 추가 서비스를받을 수도 있습니다. 그러나 나는 그것이 당신이 요구하는 것이 아니라고 생각합니다.

+0

그래서 ** 콘솔 앱용으로 다른 유형의 연결 풀링이 필요합니까? 컨테이너를 사용하고 싶지 않습니다. – Thufir

+1

당신이 묻고 있다는 의미에서 나는 네가 올바르게 이해하는지에 따라 네가 그렇게 생각한다고 생각할 것이다. 연결 풀링 구현은 java에서 표준으로 구현되지 않습니다. 컨테이너를 제공하는 공급 업체가 구현합니다. 컨테이너를 사용할 수 없거나 사용하지 않는 경우 연결 풀링을 직접 수정해야합니다. – DanielBarbarian

+0

http://commons.apache.org/proper/commons-dbcp/가 무엇입니까? 나는 그걸 수업 시간에 추가 할 수 있을까? – Thufir