Java如何使用JNDI获取数据库连接或数据源?
package org.nhooo.example.jndi;
import javax.naming.InitialContext;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class JNDITestServlet extends HttpServlet implements Servlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// doGet方法的此实现向我们展示了一个使用示例
// 在getConnection()方法中获得的conn。
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
res.setContentType("text/html");
PrintWriter writer = res.getWriter();
Connection conn = getConnection();
if (conn != null) {
try {
// 从Oracle数据库获取当前日期时间的查询
String sql = "SELECT SYSDATE FROM DUAL";
PreparedStatement statement = conn.prepareStatement(sql);
ResultSet rs = statement.executeQuery();
while (rs.next()) {
Date date = rs.getDate("SYSDATE");
writer.println("The current date is " + format.format(date));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/**从注册的数据源中获取一个数据库连接,servlet容器。要注册JNDI数据源,您应该这样做,参考你的servlet容器文档。
*
* @return a database connection
*/
private Connection getConnection() {
Connection connection = null;
try {
InitialContext context = new InitialContext();
DataSource dataSource = (DataSource) context
.lookup("jdbc/DataSource");
connection = dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短