2017-05-21 20 views
0

我使用mysql来存储我的数据。我的应用程序是桌面应用程序java。我想使用JNDI从连接池获取连接。在Java Web应用程序中,几乎在互联网上用于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")); 
     } 
    } 

} 
相关问题