最近在做一个大学的校园卡的支付系统的二次开发,拿到源码后,大致看了下代码,比较简单,不是太复杂,数据库是Oracle 10G的,拿到数据文件后,导入数据很顺利。但是当我像平常一样准备修改数据库的配置文件时,发现是这样写的:
<transactionManager type="JDBC" > <dataSource type="JNDI"> <property name="DataSource" value="Java:comp/env/jdbc/nfcDataSource"/> </dataSource> </transactionManager>采用JNDI的方式获取数据源,但是具体的配置数据库在哪配的了,以开始没有想到tomcat的content.xml文件里面配置的,在网上找了下,发现说是在content.xml里面,我在服务器上看了下,果然content.xml里面是这样配置滴:
<pre class="html" name="code"><Resource name="jdbc/nfcDataSource" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.0.1:1521:tt" username="ttt" password="ttt" maxActive="50" maxIdle="10" maxWait="-1"/>呵呵,至此,又知道了一种新的数据源的配置方式
以下是在网上找到的关于java:comp/env的简单说明:
*************************说明java:comp/env*************************** java:comp/env 是环境命名上下文(environment naming context(ENC)), 是在EJB规范1.1以后引入的,引入这个是为了解决原来JNDI查找所引起的冲突问题,也是为了提高EJB或者J2EE应用的移植性。 ENC是一个引用,引用是用于定位企业应用程序的外部资源的逻辑名。引用是在应用程序部署描述符文件中定义的。在部署时,引用被绑定到目标可操作环境中资源的物理位置(JNDI名)。 使用ENC是把对其它资源的JNDI查找的硬编码解脱出来,通过配置这个引用可以在不修改代码的情况下,将引用指向不同的EJB(JNDI)。 在J2EE中的引用常用的有: ---------JDBC 数据源引用在java:comp/env/jdbc 子上下文中声明 ---------JMS 连接工厂在java:comp/env/jms 子上下文中声明