MySql在独立的JAVA应用程序中汇集数据源(没有J2EE容器,没有JNDI,没有TOMCAT等)

时间:2015-07-22 09:25:03

标签: mysql multithreading datasource jndi

我在这里阅读了几十个主题并没有真正的启发:我在使用Java 8的Synology NAS上运行一个独立的Java应用程序。我还在同一个NAS上安装了MariaDB。所以一切都是本地的。

我能够设置数据源并获得连接,但我希望能够在任何类/线程的任何实例中访问它以进行连接池。一切似乎表明我需要JNDI。但我没有J2EE容器,这对我的需求来说似乎有些过分。同意我开发自己的JNDI实现。

我已经看到人们建议使用C3PO的类似问题的回复。但这只是另一个数据源实现。我不认为它解决了独立应用程序问题,无法从代码中的任何位置访问数据源:

How to retrieve DB connection using DataSource without JNDI?

是否有另一种跨java线程共享数据源的方法?

  1. 我可以将Datasource实例作为参数传递给每个线程,所以 他们可以在需要时联系吗?
  2. 我应该为每个线程分配一个给定的连接 - 也作为一个传递 参数?在这种情况下,从来没有真正关闭它?
  3. 或者我应该安装像tomcat,jboss,jetty这样的东西吗?是 他们相当吗?是否有超轻的J2EE容器可以 提供JNDI?
  4. 由于

    文森特

1 个答案:

答案 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对象的引用。