什么是java;上下文“;课程用于什么?

什么是java;上下文“;课程用于什么?,java,jakarta-ee,jdbc,jndi,Java,Jakarta Ee,Jdbc,Jndi,我正在检查一个java网页代码,实际上是一个基于Liferay portlet的网站 我正在检查服务器端的.java文件,并在一个DAO模式文件中查看程序员如何处理DB连接。我已经习惯了Java SE,在这里,通常会有一个连接对象调用DriverManager类,但在这里,情况大不相同: initContext = new InitialContext(); envContext = (Context) initContext.lookup("java:/comp/env"); ds = (Da

我正在检查一个java网页代码,实际上是一个基于Liferay portlet的网站

我正在检查服务器端的.java文件,并在一个DAO模式文件中查看程序员如何处理DB连接。我已经习惯了Java SE,在这里,通常会有一个连接对象调用
DriverManager
类,但在这里,情况大不相同:

initContext = new InitialContext();
envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("jdbc/SSMoracle");
conn = ds.getConnection();  
这样,对象
conn
就可以与数据库建立正确的连接,并且工作正常。但我从未见过它是如何工作的,尤其是
上下文

这个类是做什么的,为什么使用它而不是使用调用
DriverManager
的类来获得正确的连接?我很想知道

它是Java命名和目录接口的一部分。这是JavaEE容器提供的服务之一

应用程序可以在JNDI中查找数据源(用于数据库访问)。管理员可以在JavaEE容器的管理控制台中定义和配置数据源

问题中的代码行正是这样做的:通过JNDI查找
数据源
,然后从
数据源
获取数据库连接


查看Apache Tomcat的文档,看看当使用Tomcat Servlet容器时,它是如何工作的,而

上下文是一个接口。它是JNDI的基础类。你需要阅读一些文档。太宽了,谢谢!但是,对于每个示例,我为什么要使用它而不是简单地使用连接检索抽象类(使用DriverManager)?换句话说,您认为有必要在J2EE项目中使用JNDI吗?因为这为管理员提供了一个管理数据库连接的中心位置(在Java EE服务器的管理控制台中),并且因为它使管理数据库连接成为可能。连接池是否足够好以提高性能,要考虑将JNDI连同连接池一起应用到每个java EE项目?@使用连接池的Zelok在java EE应用程序中是常见的做法。您应该始终这样做,而不是手动打开数据库连接。数据库对其可以处理的并发连接数有限制。另外,打开连接相对较慢。谢谢!这是一个非常有用的事实。我们得看看JNDI规范。您是否了解一些快速入门指南,以了解如何轻松实现(并使用)连接池?