java "Context" class 有什么用?

What is the java "Context" class used for?

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

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

initContext = new InitialContext();
envContext = (Context) initContext.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("jdbc/SSMoracle");
conn = ds.getConnection();  

这样做,对象 conn 与数据库建立了正确的连接,并且运行良好。不过,我从未见过它是如何工作的,尤其是 Context class。

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

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

应用程序可以在 JNDI 中查找诸如数据源(用于数据库访问)之类的东西。管理员可以在 Java EE 容器的管理控制台中定义和配置数据源。

问题中的代码行正是这样做的:通过 JNDI 查找 DataSource,然后从 DataSource.

获取数据库连接

例如,查看 Apache Tomcat 的文档,了解当您使用 Tomcat servlet 容器时它是如何工作的:JNDI Resources HOW-TO and JNDI Datasource HOW-TO