我在这里阅读了几十个主题并没有真正的启发:我在使用Java 8的Synology NAS上运行一个独立的Java应用程序。我还在同一个NAS上安装了MariaDB。所以一切都是本地的。
我能够设置数据源并获得连接,但我希望能够在任何类/线程的任何实例中访问它以进行连接池。一切似乎表明我需要JNDI。但我没有J2EE容器,这对我的需求来说似乎有些过分。同意我开发自己的JNDI实现。
我已经看到人们建议使用C3PO的类似问题的回复。但这只是另一个数据源实现。我不认为它解决了独立应用程序问题,无法从代码中的任何位置访问数据源:
How to retrieve DB connection using DataSource without JNDI?
是否有另一种跨java线程共享数据源的方法?
由于
文森特
答案 0 :(得分:0)
您可以使用单例模式,例如:
public class DataSourceFactory {
private static DataSource instance = null;
private DataSourceFactory() { }
public static synchronized DataSource getDataSource(){
if(instance == null){
instance = // initialize your datasource
}
return instance;
}
}
然后,您可以调用DataSourceFactory.getDataSource()
来获取对DataSource对象的引用。