优点
实现了Java程序和配置文件的分离。将JDBC驱动程序的引用、服务器名称、用户名、密码这些信息交给J2EE容器配置和管理,程序员只需要对这些配置和管理进行引用即可。
实现步骤
1、在J2EE容器中配置JNDI参数;
2、程序中引用。
JBOSS下实现JNDI:
1、在JBOSS服务目录server/default/deploy下新建数据库配置文件xx.xml,配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MZ_ORCL_Fujian</jndi-name>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@192.168.60.61:1521:TEST</connection-url>
<user-name>username</user-name>
<password>password</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>30</max-pool-size>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
2、在Java程序中引用
<body>
<%
InitialContext ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("java:/MZ_ORCL_Fujian");
Connection conn = dataSource.getConnection();
%>
<%=conn %>
<%
conn.close();
%>
</body>
因为由JBOSS服务管理数据库配置,所以具体测试要启动JBOSS服务,代码不可以脱离JBOSS服务单独测试。可以在JSP或者Servlet中书写测试。上面的代码书写在WEB服务的默认访问页面index.jsp中的。方便测试。
3、访问项目
JBOSS上部署项目,启动JBOSS服务,访问项目,执行结果如上。
TOMCAT下实现JNDI:
1、修改TOMCAT目录下配置文件conf/context.xml,如下:
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- 根据实际情况修改 -->
<Resource
name="jdbc/test"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.60.61:1521:TEST"
username="username"
password="password"
maxIdle="20"
maxWait="5000"/>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
2、修改web.xml配置文件,添加如下配置:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其中,res-ref-name和context.xml配置文件中Resource元素的name属性值相同。
3、修改inex.jsp
<body>
<%
InitialContext ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
Connection conn = dataSource.getConnection();
%>
<%=conn %>
<%
conn.close();
%>
</body>
4、测试
在TOMCAT安装目录lib文件夹下面添加oracle的驱动,重新发布启动服务,测试通过。测试结果如下: