JNDI配置方式
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,听起来非常专业,其实很简单,就是为某个java对象起一个名子,例如,如下的操作,就是为Tomcat容器中的数据源起一个名子"jdbc/demo",从而其他程序可以能过该名子来访问訪数据源对象。
服务器: Tomcat 7
数据库:oracle 12c
1:将下面的代码添加到Tomcat服务器上conf/context.xml中的<Context></Context>标签中,其中红色加深部分需要根据自己实际进行修改
<Resource
name="jdbc/demo"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="root"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
/>
上下文context.xml中的参数的解析如下:
其中的name属性是数据源名称,通常采取jdbc/**.
driverClassName属性是驱动程序名称。
username,password,数据库名称和密码
url:访问的数据库路径。其中url的内容组成解析上篇博客中已经分析
maxActive属性是并发连接的最大数。设置为0则无限制。
maxWait属性是等待连接的最大连接的时间。
maxIdle属性是连接池中空闲的连接的个数。
2. 有的文章说修改web.xml
修改%TOMCAT_HOME%\conf\web.xml,在</web-app>节点中添加内容 或是
修改工程下的web.xml文件。工程目录下bin下WEB-INF web.xml。但是经我测试,不配置web.xml也可以使用。我测试时,如下片段没的配置,也可以正常跑起来<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/demo</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
请注意,jdbc/demo名字一定要与tomcat中context.xml统一。
3.将Oracle数据库的JDBC驱动ojdbc7.jar放入TOMCAT_HOME//lib下。
4.建测试jsp页面,把下面代码直接copy一下,进行小小的调整,改成自己数据库里有的表名称
<%@page import="javax.naming.*"%> <%@ page import="javax.sql.*"%> <%@ page import="java.sql.*"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/demo"); Connection conn = ds.getConnection(); Statement st = conn.createStatement(); ResultSet rt = st.executeQuery("select * from users"); while(rt.next()){ out.print(rt.getString(1) + "\t" + rt.getString(2) + "<br/>"); } %> </body> </html>
测试通过 !!!