如何在Java SE项目中使用InitialContext数据库信息

时间:2013-07-15 17:45:56

标签: java maven java-ee jdbc

这可能是一个有点奇怪的问题,但我不知道如何以另一种方式做到这一点。基本上,我在两个maven项目之间共享连接代码。一个是Maven Web应用程序,另一个是常规Maven项目。

要设置数据库连接上下文,我在Maven Web应用程序中使用META_INF / context.xml。

但是,常规Maven项目不使用此文件,因此在运行获取数据源的代码时:

Context envCtx = (Context) new InitialContext().lookup("java:comp/env");
dbPool = (DataSource) envCtx.lookup("jdbc/MyAppUCP");

当然会抛出NamingException。如何重用此方法获取与常规Maven Java应用程序的数据库连接?将META_INF /目录复制到项目中不起作用。

1 个答案:

答案 0 :(得分:1)

具有默认构造函数的InitialContext仅在托管环境(j2EE容器)中有效。如果需要从Java SE进程查找JNDI,则需要将属性对象作为参数传递给重载的构造函数。

每个app / webserver都有自己的属性集,需要在属性对象中设置。请参阅应用服务器的文档(http://docs.oracle.com/javase/jndi/tutorial/beyond/env/source.html)。

同样,从外部进程查找JNDI条目会有安全约束。