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

标签 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");
dbPool = (DataSource) envCtx.lookup("jdbc/MyAppUCP");

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

最佳答案

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

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

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

关于java - 如何在 Java SE 项目中使用 InitialContext 数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660511/

相关文章:

java - Maven 在运行 Spring Boot 应用程序时无法启动嵌入式 Tomcat 容器

java - Maven 程序集插件使用 bat 或 sh 文件生成 zip

java - 发布 spring boot 的项目列表

java - 如何将项目(即从 github)导入到我的应用程序

java - java代码中的getParameter()怎么办?

java - 透明背景滚动文本

java - 使用 Intellij Community Edition,出现编译错误 "java: package javax.servlet.http does not exist"

java - Selenium webdriver 使用相对路径上传下载文件

java - 如何知道 glassfish 使用哪种类型的安全领域

java - 有没有办法下载所有 Java EE 接口(interface)?