在
WEB
应用的
/META-INF/context.xml
中配置
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/ums"
type="javax.sql.DataSource"
username="scott“
password="tiger“
url="jdbc:oracle:thin:@localhost:1521:ORCL"
driverClassName="oracle.jdbc.driver.OracleDriver“
maxIdle="2"
maxWait="5000"
maxActive="4"/>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
•
添加
JDBC
驱动程序
ü
在
<%CATALINA_HOME%>/lib
目录下添加
JDBC
驱动程序。
•
程序中访问数据源
ü
获取
DataSource
对象
Ø
JNDI (
j
ava
N
aming and
D
irectory
I
nterface)
对象名字绑定技术,
利用
javax.naming.Context
接口的方法
package com.duoduo.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class JDBCConnectionTestServlet extends HttpServlet {
private String diver;
private String username;
private String password;
private String url;
private Connection connection;
public void init() throws ServletException {
jdni();
// jdbc();
}
public void jdbc() {
ServletContext context = getServletContext();
diver = context.getInitParameter("driver");
username = context.getInitParameter("username");
password = context.getInitParameter("password");
url = context.getInitParameter("url");
Logger logger = Logger.getLogger("com.duoduo");
logger.info(diver + " " + username + " " + password + " " + url);
try {
Class.forName(diver);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void jdni() {
try {
Context context = new InitialContext();
DataSource ds = (DataSource) context
.lookup("java:comp/env/jdbc/ums");
connection = ds.getConnection();
} catch (NamingException e1) {
e1.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("gb2312");
PrintWriter out = resp.getWriter();
if (connection != null) {
out.write("已获得数据库连接");
} else {
out.write("数据库连接失败");
}
out.flush();
out.close();
}
@Override
public void destroy() {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}