0
我使用mysql来存储我的数据。我的应用程序是桌面应用程序java。我想使用JNDI从连接池获取连接。在Java Web应用程序中,几乎在互联网上用于JNDI的教程。 因此在桌面应用程序中没有资源和META-INF文件夹。 如何使用从我的路径读取配置文件的JNDI?如何在桌面应用程序中使用java设置与JNDI的Mysql连接
感谢
我使用mysql来存储我的数据。我的应用程序是桌面应用程序java。我想使用JNDI从连接池获取连接。在Java Web应用程序中,几乎在互联网上用于JNDI的教程。 因此在桌面应用程序中没有资源和META-INF文件夹。 如何使用从我的路径读取配置文件的JNDI?如何在桌面应用程序中使用java设置与JNDI的Mysql连接
感谢
请检查这个答案: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"));
}
}
}