gpt4 book ai didi

java - JDBC 连接池说明

转载 作者:行者123 更新时间:2023-12-02 07:59:02 25 4
gpt4 key购买 nike

我通过执行以下更改在 java-ee 环境中设置了 jdbc 连接池。

    The context.xml 

<Context>
<Resource name="jdbc/mysybase" auth="Container"
type="javax.sql.DataSource" driverClassName="com.sybase.jdbc3.jdbc.SybDriver"
url="jdbc:sybase:Tds:H2S33.studtrack.com:2025/student"
username="scott" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>
</Context>


In The web.xml file
<resource-ref>
<description>Sybase Datasource example</description>
<res-ref-name>jdbc/mysybase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


And the jsp page

<%@page import="java.sql.*"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="javax.sql.DataSource"%>
<html>
<head>
<title>Obtaining a Connection</title>
</head>
<body>

<%
Connection conn = null;
ResultSet result = null;
Statement stmt = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/mysybase");
conn = ds.getConnection();
if (conn != null)
{
String message = "Got Connection " + conn.toString() + ", ";
out.write(message);
}
else
{
out.write("hello no conn obtained");

}

stmt = conn.createStatement();
result = stmt.executeQuery("SELECT * FROM Student");
while(result.next())
{
out.write(result.getString("name"));
}

}
catch (SQLException e) {
out.write("Error occurred " + e);
}

%>

</body>
</html>

现在我希望 jdbc 池也可以在普通的 java 类中使用。如果我希望池在 java 类中可用,我是否需要进行任何更改?我可以在 java 类中获取连接对象,就像我在 jsp 中获取连接一样,如上所示。

Connection conn = null; 
ResultSet result = null;
Statement stmt = null;
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/mysybase");
conn = ds.getConnection();

最佳答案

1.) 您可以设置一个 contextListener 来仅初始化一次连接并从池中获取逻辑 conn(假设您使用 tomcat 的 DBCP)。

2.) 是的,一旦您从上下文数据启动连接(驱动程序设置套接字并初始化池),您就可以从任何 java 类正确调用该连接(从池)获取连接。

3.) 尽量不要将纯 Java 代码放入 JSP 中。这只是一条规则:被视为一个糟糕的决定。

关于java - JDBC 连接池说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com