从独立Java应用程序中的JNDI上下文获取DataSource对象?

时间:2016-07-30 09:45:26

标签: java datasource jndi

我从here下载了fscontext.jar文件并将其放在我的类路径中。

这是我的代码:

import javax.naming.*;
import java.io.File;

public class JNDIHello {

    final static String URL =
            "file:///Users/Koray Tugay/Development/studentform/src/main/java/biz/tugay";
    final static String CONTEXT_FACTORY
            = "com.sun.jndi.fscontext.RefFSContextFactory";

    static {
        System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
        System.setProperty(Context.PROVIDER_URL, URL);
    }

    public static void main(String[] args) throws Exception {
        final InitialContext context = new InitialContext();
        final File file = (File) context.lookup("TestClass.java");
        System.out.println("File exists? " + file.exists());
    }
}

输出将是:

File exists? true

这很棒。我正在使用RefFSContextFactory和JNDI从上下文中获取文件对象

我想要做的是能够获得 DataSource 对象,就像在Web应用程序中一样。可以看到一个例子here

我已经在我的本地运行了h2db,其属性如下:

<?xml version='1.0' encoding='utf-8'?>
<Context>
    <Resource name="jdbc/studentform" auth="Container" type="javax.sql.DataSource"
              maxActive="5" maxIdle="10" maxWait="10000"
              username="sa" password="" driverClassName="org.h2.Driver"
              url="jdbc:h2:tcp://localhost:9092/~/h2dbs/studentform"/>
</Context>

但是我应该使用什么jndi Factory实现,以及如何在独立的Java应用程序中定义URL?

1 个答案:

答案 0 :(得分:0)

您需要一些容器来运行您的应用程序并为其提供数据源管理等服务。Spring Framework是在这种情况下首先想到的。including data sources。它允许您创建一个IoC容器来管理您的依赖项Spring Boot。它还有https://www.youtube.com/watch?v=Cc3K2jDdKTo&list=UUVTlvUkGslCV_h-nSAId8Sw&index=97子项目,可以更轻松地创建可运行模块。