返回
在 Web 中访问 context.xml 中的值
后端
2023-09-04 23:24:15
全面理解 JNDI 机制,在 Web 中灵活访问 context.xml
1. JNDI 介绍
JNDI(Java Naming and Directory Interface)是一种 Java 应用程序与各种命名和目录服务进行交互的 API。它允许应用程序通过统一的接口访问不同的命名服务,例如 LDAP、DNS 和文件系统。
2. 在 Web 中使用 JNDI
在 Web 环境中,我们可以通过 JNDI 访问存储在 context.xml 文件中的配置值。context.xml 是一个 XML 文件,用于配置 Web 应用程序的各种参数,例如数据源、资源池、安全设置等。
3. 步骤
- 在 Web.xml 文件中配置 JNDI 资源引用:
<resource-ref>
<res-ref-name>jdbc/myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- 在 context.xml 文件中配置实际的资源:
<Context>
<Resource name="jdbc/myDataSource" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/my_database"
username="root"
password="password" />
</Context>
- 在 Java 代码中使用 JNDI 查找资源:
Context initContext = new InitialContext();
DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/myDataSource");
4. 实例
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class WebContextXmlExample {
public static void main(String[] args) throws NamingException, SQLException {
// Get the initial context
Context initContext = new InitialContext();
// Lookup the data source
DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/myDataSource");
// Get a connection from the data source
Connection connection = ds.getConnection();
// Create a statement
Statement statement = connection.createStatement();
// Execute a query
ResultSet resultSet = statement.executeQuery("SELECT * FROM customers");
// Process the results
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
// Close the connection
connection.close();
}
}
5. 总结
通过 JNDI,我们可以轻松地在 Web 环境中访问 context.xml 中的值。这使得我们可以将配置值存储在一个中心位置,并方便地在不同的应用程序中共享这些值。