2017-05-21 1 views
0

나는 내 데이터를 저장하기 위해 mysql을 사용하고있다. 내 응용 프로그램은 데스크톱 응용 프로그램 자바입니다. 연결 풀에서 연결을 얻으려면 JNDI를 사용하고 싶습니다. 자바 웹 애플리케이션의 JNDI를위한 인터넷 튜토리얼 데스크톱 응용 프로그램에는 리소스 및 META-INF 폴더가 없습니다. 내 경로에서 구성 파일을 읽는 JNDI를 사용하는 방법은 무엇입니까?데스크탑 응용 프로그램에서 java를 사용하여 JNDI와의 MySQL 연결을 설정하는 방법

감사

답변

0

이 답변을 확인하시기 바랍니다 : https://stackoverflow.com/a/21733896/1173112

어쩌면이 킥오프 예로서 당신을 도울 것입니다 :

import org.apache.commons.dbcp2.BasicDataSource; 

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.naming.spi.InitialContextFactory; 
import javax.naming.spi.InitialContextFactoryBuilder; 
import javax.naming.spi.NamingManager; 

import javax.sql.DataSource; 
import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.Hashtable; 

class MyInitialContext extends InitialContext { 
    private Hashtable<String, DataSource> dataSources = new Hashtable<>(); 

    public MyInitialContext() throws NamingException { 
    } 

    @Override 
    public Object lookup(String name) throws NamingException { 
     if (dataSources.isEmpty()) { //init datasources 
      final BasicDataSource ds = new BasicDataSource(); 
      ds.setUrl("jdbc:h2:tcp://localhost:9092/~/h2dbs/studentform"); 
      ds.setUsername("sa"); 
      ds.setPassword(""); 
      dataSources.put("jdbc/studentform", ds); 
     } 
     if (dataSources.containsKey(name)) { 
      return dataSources.get(name); 
     } 
     throw new NamingException("Unable to find datasource: " + name); 
    } 
} 

class MyInitialContextFactory implements InitialContextFactory { 
    @Override 
    public Context getInitialContext(Hashtable<?, ?> hashtable) 
      throws NamingException { 
     final MyInitialContext myInitialContext; 
     myInitialContext = new MyInitialContext(); 
     return myInitialContext; 
    } 
} 

class MyInitialContextFactoryBuilder implements InitialContextFactoryBuilder { 
    @Override 
    public InitialContextFactory createInitialContextFactory(Hashtable<?, ?> hashtable) { 
     final MyInitialContextFactory myInitialContextFactory 
       = new MyInitialContextFactory(); 
     return myInitialContextFactory; 
    } 
} 

public class InitialContextInStandAloneExample { 

    public static void main(String[] args) throws NamingException, SQLException { 
     final InitialContextFactoryBuilder initialFactoryBuilder 
       = new MyInitialContextFactoryBuilder(); 
     NamingManager.setInitialContextFactoryBuilder(initialFactoryBuilder); 

     final InitialContext initialContext = new InitialContext(); 
     final BasicDataSource bds = 
       (BasicDataSource) initialContext.lookup("jdbc/studentform"); 

     final Connection connection = bds.getConnection(); 
     final Statement statement = connection.createStatement(); 
     final ResultSet resultSet = statement.executeQuery("SELECT * FROM STUDENT"); 

     while (resultSet.next()) { 
      System.out.println(resultSet.getString("FULLNAME")); 
     } 
    } 

} 
관련 문제