2017-05-21 2 views
0

einrichten Ich verwende mysql zum Speichern meiner Daten. Meine Anwendung ist Desktop-Anwendung Java. Ich möchte JNDI für Verbindung vom Verbindungspool erhalten. Fast Tutorial im Internet für JNDI in Java Web Application. So in der Desktop-Anwendung gibt es keine Ressource und META-INF-Ordner. Wie verwende ich JNDI, die Konfigurationsdatei von meinem Pfad lesen?Wie Mysql Verbindung mit JNDI mit Java in Desktop-Anwendung

Dank

Antwort

0

Bitte überprüfen Sie diese Antwort: https://stackoverflow.com/a/21733896/1173112

dieses Sie als Kick-off Beispiel helfen Vielleicht:

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")); 
     } 
    } 

}