如何在JavaSE项目中使用InitialContext数据库信息
这可能是一个有点奇怪的问题,但我不知道如何用另一种方式来做。基本上,我在两个maven项目之间共享连接代码。一个是Maven Web应用程序,另一个是常规Maven项目 为了设置数据库连接上下文,我在Maven web应用程序中使用META_INF/context.xml 但是,常规Maven项目不使用此文件,因此在运行获取数据源的代码时:如何在JavaSE项目中使用InitialContext数据库信息,java,maven,jakarta-ee,jdbc,Java,Maven,Jakarta Ee,Jdbc,这可能是一个有点奇怪的问题,但我不知道如何用另一种方式来做。基本上,我在两个maven项目之间共享连接代码。一个是Maven Web应用程序,另一个是常规Maven项目 为了设置数据库连接上下文,我在Maven web应用程序中使用META_INF/context.xml 但是,常规Maven项目不使用此文件,因此在运行获取数据源的代码时: Context envCtx = (Context) new InitialContext().lookup("java:comp/env"); dbPoo
Context envCtx = (Context) new InitialContext().lookup("java:comp/env");
dbPool = (DataSource) envCtx.lookup("jdbc/MyAppUCP");
当然会抛出NamingException。如何使用常规Maven java应用程序重用这种获取数据库连接的方法?将META\u INF/目录复制到项目中不起作用。带有默认构造函数的InitialContext仅在托管环境(j2EE容器)中起作用。如果需要从JavaSE进程查找JNDI,则需要将属性对象作为参数传递给重载构造函数 每个应用程序/Web服务器都有自己的一组属性,需要在property对象中设置这些属性。请参阅app server的文档()
同样,在从外部进程查找JNDI条目时会有安全约束 显示您的jdbc资源,也许您只是没有正确地命名它。它在Maven web应用程序中运行良好。这不是问题所在。问题是我希望能够在常规maven项目中使用envCtx.lookup(“jdbc/MyAppUCP”)。