jndi 简单的说就是 把一种功能服务,用另一种方式表现出来,这种方式就是jndi。
举个例子。
我想要获取 磁盘上的 一个文件,假如说是“C:/aaa.txt”
正常的情况下我就要
File file =new File("C:/aaa.txt");
这样我就得到了文件对象,然后对干对象进行操作。
然而还可以使用 jndi来实现这种功能,
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
(以上3句可以这样写,其实这个部分就是启动jndi服务)
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext();
---------------------------------------------------------------------------------------------------------------------------------------
接下来
Object obj = ctx.lookup(“C:/aaa.txt”);
File file = (File)obj;
这样也获取了这个文件对像。
jndi配置数据源:
在applicationContext.xml(spring配置文件)文件中:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/wydb" />
在web.xml文件中:
<resource-ref >
<description></description>
<res-ref-name>jdbc/wydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
在(tomcat)sever.xml中:
<Context docBase="eWeb" path="/neweb" reloadable="true" source="org.eclipse.jst.j2ee.server:eWeb">
<Resource name="jdbc/wydb" auth="Container" type="javax.sql.DataSource" username="EUSER" password="EUSER" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.130:1521:devdb" maxActive="8" maxIdle="4" factory="org.apache.commons.dbcp.BasicDataSourceFactory" />
</Context>
个人总结
优点:例如在websphere(类似tomcat)加上数据库连接的配置就更安全
缺点:在开发时不易用此配置方法,在用cvs将程序下载到本地时任然需要配置,繁琐了些;但是在发布的时候可以用。
在java中也可以通过它来获取想要的资源:
public DBConnection() {
try {
Context ctx = new InitialContext();
if (ctx == null) throw new Exception("No Context");
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
if (ds == null) throw new Exception("jdbc/oracle is an unknown DataSource");
conn = ds.getConnection();
stmt = conn.createStatement();
} catch (Exception e) {
System.out.println("naming:" + e.getMessage());
}
}
分享到:
相关推荐
它提供了一种标准的方式来查找和管理分布式环境中的对象,比如数据库连接池、邮件服务器配置等。JNDI使得应用程序可以与各种不同类型的命名和目录服务进行交互,而不必关心具体的服务实现细节。 在给定的"jndi-jar....
- **可移植性**:应用程序可以轻松地从一种环境迁移到另一种环境,只需更改JNDI配置即可。 - **易于维护**:资源的配置信息集中在一个地方,方便管理和更新。 #### 五、总结 JNDI作为一种标准的命名和目录服务接口...
JNDI在分布式环境中特别有用,因为它提供了一种统一的方式来定位和管理网络资源。 JNDI的核心概念包括: 1. **命名服务**:命名服务是JNDI的基础,它将名称与对象关联起来。应用程序可以通过名称来查找和访问对象,...
- **JNDI**:这可能是另一个文件或文件夹,可能包含了更深入的JNDI示例代码或教程文档,帮助用户通过实践来理解JNDI的工作方式。 总之,对于想要了解和学习JNDI的初学者来说,这个压缩包提供了很好的起点。通过阅读...
它提供了一种标准的API,使得开发者可以使用统一的方式来与各种不同的命名服务和目录服务进行交互,包括但不限于文件系统、数据库、EJB、Web应用程序等。JNDI的核心理念是解耦应用程序与底层服务的具体实现,使得...
- 另一种方法是在每个Web应用的`context.xml`文件中定义数据源,这种方式的数据源只对当前应用可见。配置过程与在Web项目中的类似,但数据源不会被添加到`server.xml`的`GlobalNamingResources`。 在实际应用中,...
数据源(DataSource)是一种用于获取数据库连接的接口,通过它可以在服务器端配置数据库连接池,从而实现高效连接复用,减少数据库连接创建和销毁的开销。 ### 3. J2EE 应用组件 - **题目描述**:为了支持J2EE应用...
依赖注入(Dependency Injection, DI)是一种设计模式,目的是减少代码间的耦合度,使得对象间的协作关系由容器来提供而不是硬编码到对象内部。在EJB中,依赖注入可以显著简化代码,提高可维护性和可测试性。 #####...
- **时间戳(timestamp)**:另一种乐观锁实现方式。 - **property**:普通属性的映射方式。 - **多对一(many-to-one)**:表示一对多关系的逆向映射。 - **一对一**:一对一关系的映射方法。 - **组件...
另一种获取配置的方式是通过`Environment`对象,它是SpringBoot应用中的一个核心组件。在需要配置信息的类中,可以通过依赖注入获取: ```java @Autowired private Environment env; ``` 然后你可以通过`env....
- **4.1.1 获取文件的属性** - 如 `file.exists()`、`file.isDirectory()` 等。 - **4.1.2 创建目录** - 使用 `new File(directory).mkdir()` 创建目录。 - **4.1.3 删除文件和目录** - `file.delete()` 方法...
而JavaServer Pages(JSP)是另一种Java技术,它允许开发者将HTML代码与Java代码分离,使得动态内容的生成更加容易。 **Tomcat结构和组件:** 1. **Catalina** - 这是Tomcat的主要组件,实现了Servlet和Servlet容器...
根据提供的文件信息,本文将详细解析Spring与iBatis整合...另一种则是通过JNDI获取数据源。这两种方式都是为了后续配置iBatis的SqlMapClient做准备。 ```xml <!-- 数据源配置 --> <!-- JNDI数据源配置 --> ...
- `<jsp:include>`用于包含另一个文件。 - `<jsp:forward>`用于重定向到另一个页面。 - `<jsp:param>`用于传递参数。 - **JSP用例**: - 使用JSP创建动态网页,展示从后端获取的数据。 - 结合Servlet和JSP实现...
C3P0是另一个常用的连接池实现,它的配置方式类似,但具体参数和配置细节略有不同。不过在本案例中,我们主要讨论了DBCP的配置方法。 总结,理解和正确配置连接池插件以及XML文件对于提高Web应用的性能至关重要。...