[英]JDBC Connection Pooling Clarification
我通過執行以下更改在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中。 只是道路規則:被視為一個糟糕的決定。
是的,您使用JNDI(Java命名和目錄接口)標准來准備連接,因此您可以在java類中使用相同的代碼來訪問連接。(當然,您必須使用它來初始化Context實例,例如必須設置連接工廠它)。
我看到你的代碼並找到這些注釋,為了更好的應用,你必須遵守它:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.