这可能是一个有点奇怪的问题,但我不知道如何以另一种方式做到这一点。基本上,我在两个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 /目录复制到项目中不起作用。
答案 0 :(得分:1)
具有默认构造函数的InitialContext仅在托管环境(j2EE容器)中有效。如果需要从Java SE进程查找JNDI,则需要将属性对象作为参数传递给重载的构造函数。
每个app / webserver都有自己的属性集,需要在属性对象中设置。请参阅应用服务器的文档(http://docs.oracle.com/javase/jndi/tutorial/beyond/env/source.html)。
同样,从外部进程查找JNDI条目会有安全约束。