0

这可能是一个有点奇怪的问题,但我不确定如何以另一种方式做到这一点。基本上,我在两个 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/ 目录复制到项目中不起作用。

4

1 回答 1

1

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

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

同样,在从外部进程中查找 JNDI 条目时会有安全限制。

于 2013-07-18T12:47:52.347 回答