我正在尝试理解connection pooling in java
,我在我的应用程序中使用jsp, servlet and tomcat 6 server
。我在java class dbconnection.java
:
我在windows Xp OS中使用类型4 jdbc与oracle 10g EE的连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class dbconnection {
public Connection con = null;
public Connection getConnection() throws Exception, SQLException
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:abc","abc", "abc");
}
catch(Exception e)
{
}
return con;
}
public void removeConnection() throws SQLException
{
con.close();
}
}
然后我按如下方式在servlet中重新connection
:
try{
dbconnection db= new dbconnection();
Connection con=db.getConnection();
}
catch(Exception e){
}
finally{
db.removeConnection();//removes connection
}
connection pooling
或其他内容需要tomcat server
或某些配置吗?
答案 0 :(得分:6)
连接池通过提前创建连接的工作来运行。 对于JDBC连接池,在应用程序服务器启动时会创建一个Connection对象池。客户端可以访问连接池中的连接对象,并在完成数据库工作后将对象返回到池中。
context.xml中
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="root" password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/cdcol"/>
//应该在服务器上下文xml文件中添加。例如,如果您使用的是apache服务器,则可以在C:\ apache-tomcat-6.0.26 \ conf \ Context.xml中找到context.xml
的web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
//应该在本地项目的web.xml中添加。 (不在服务器的web.xml中)。
Context ctx=new InitialContext();
Context envContext = (Context)ctx.lookup("java:comp/env");
DataSource ds=(DataSource)envContext.lookup("jdbc/TestDB");//TestDB is the Database Name
con=ds.getConnection();
stmt = con.createStatement();
答案 1 :(得分:3)
您可以获得第三方库,也可以使用Java EE容器(例如,JBoss或WebSphere)为您提供的连接池。
为此,您需要配置和使用JNDI数据源。
以下是Tomcat的详细信息:
答案 2 :(得分:1)
连接池是所有主要Web和应用程序服务器中可用的功能。您可以找到有关使用Tomcat进行配置的简单示例。 Tomcat Connection Pooling
但是如果您想编写自己的连接池,那么可以编写库。 Apache DBCP