hoho 不是调用而是自己写一个啦 主要说一下该如何处理池子里的连接,如何判断连接是好的 假如连接在使用过程中坏掉了,该如何处理没完成的工作,虽然知道没完成的工作要继续获得一个连接,但是如何判断正在使用的连接是坏的呢-- 这些问题 web server 都会解决的
package dbpool; import java.sql.*;public class ConnBean { private Connection conn = null; private boolean inuse = false;public ConnBean() {}public ConnBean(Connection con) { if (con != null) conn = con; }public Connection getConnection() { return conn; }public void setConnection(Connection con) { conn = con; }public void setInuse(boolean inuse) { this.inuse = inuse; }public boolean getInuse() { return inuse; }public void close() { try { conn.close(); conn=null; } catch (SQLException e) { System.out.println(e.getMessage()); } } } package dbpool; import java.sql.*; import java.util.*; public class PoolBean implements java.io.Serializable { private int poolsize = 5; private ConnBean connBean = null; private ConnParam cp=null; private Vector pool = null; private boolean isInit=false; public PoolBean() { } public PoolBean(ConnParam cp) { this.cp=cp; } public boolean getState() { return isInit; } public void setState(boolean isInit) { this.isInit=isInit; } public void setSize(int s) { if (s > 1 && !isInit) poolsize = s; } public int getSize() { return poolsize; } public void setConnBean(ConnBean cb) { if (cb != null) connBean = cb; } public ConnBean getConnBean() { return this.connBean; } public void setConnParam(ConnParam cp) { this.cp=cp; } private Connection createConnection() throws Exception { return DriverManager.getConnection(cp.getUrl(), cp.getUserName(),cp.getPassword()); }public synchronized void initializePool() throws Exception { if (cp == null) cp=new HesConnParam(); if (poolsize < 5) poolsize=5; try { Class.forName(cp.getDriver()); for (int i = 0; i < poolsize; i++) { Connection con = createConnection(); if (con != null) { ConnBean connBean = new ConnBean(con); addConnection(connBean); } } isInit=true; } catch (Exception e) { System.err.println(e.getMessage()); throw new Exception(e.getMessage()); } }private void addConnection(ConnBean connbean) { if (pool == null) pool = new Vector(poolsize); pool.addElement(connbean); }public synchronized void close(Connection con) { for (int i = 0; i < pool.size(); i++) { ConnBean connBean = (ConnBean)pool.elementAt(i); if (connBean.getConnection() == con) { connBean.setInuse(false); break; } } }public synchronized Connection getConnection() throws Exception { ConnBean connBean = null; for (int i = 0; i < poolsize; i++) { connBean = (ConnBean) pool.elementAt(i); if (connBean.getInuse() == false) { connBean.setInuse(true); return connBean.getConnection(); } } try { Connection con = createConnection(); connBean = new ConnBean(con); connBean.setInuse(true); pool.addElement(connBean); poolsize++; } catch (Exception e) { System.out.println(e.getMessage()); throw new Exception(e.getMessage()); } return connBean.getConnection(); }public synchronized void emptyPool() { if(pool ==null) return; for (int i = 0; i < poolsize; i++) { ConnBean connBean = (ConnBean) pool.elementAt(i); if (connBean.getInuse() == false) { connBean.close(); } else { try { java.lang.Thread.sleep(2000); connBean.close(); } catch (InterruptedException ie) { System.err.println("关闭连接池出错:"+ie.getMessage()); } } }
} public void reSetPool() { emptyPool(); pool.removeAllElements(); poolsize = 5; connBean = null; cp=null; isInit=false; } } package dbpool;public abstract class ConnParam { public final String ORADRIVER="oracle.jdbc.driver.OracleDriver"; public final String SQLSERVERDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver"; public abstract String getDriver(); public abstract String getUrl(); public abstract String getUserName(); public abstract String getPassword(); }
Context ctx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象
Object obj = (Object) ctx.lookup("jdbc/SqlServerDB");
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = " insert into test(id,name) values('00001','fany')";
stmt.executeUpdate(strSql);
strSql = " select id,name from test ";
ResultSet rs = stmt.executeQuery(strSql);
不是调用而是自己写一个啦
主要说一下该如何处理池子里的连接,如何判断连接是好的
假如连接在使用过程中坏掉了,该如何处理没完成的工作,虽然知道没完成的工作要继续获得一个连接,但是如何判断正在使用的连接是坏的呢?
不是调用而是自己写一个啦
主要说一下该如何处理池子里的连接,如何判断连接是好的
假如连接在使用过程中坏掉了,该如何处理没完成的工作,虽然知道没完成的工作要继续获得一个连接,但是如何判断正在使用的连接是坏的呢-- 这些问题 web server 都会解决的
import java.sql.*;public class ConnBean {
private Connection conn = null;
private boolean inuse = false;public ConnBean() {}public ConnBean(Connection con) {
if (con != null)
conn = con;
}public Connection getConnection() {
return conn;
}public void setConnection(Connection con) {
conn = con;
}public void setInuse(boolean inuse) {
this.inuse = inuse;
}public boolean getInuse() {
return inuse;
}public void close() {
try {
conn.close();
conn=null;
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
package dbpool;
import java.sql.*;
import java.util.*;
public class PoolBean implements java.io.Serializable {
private int poolsize = 5;
private ConnBean connBean = null;
private ConnParam cp=null;
private Vector pool = null;
private boolean isInit=false;
public PoolBean()
{
}
public PoolBean(ConnParam cp)
{
this.cp=cp;
}
public boolean getState()
{
return isInit;
}
public void setState(boolean isInit)
{
this.isInit=isInit;
}
public void setSize(int s) {
if (s > 1 && !isInit)
poolsize = s;
}
public int getSize() {
return poolsize;
}
public void setConnBean(ConnBean cb) {
if (cb != null) connBean = cb;
}
public ConnBean getConnBean() {
return this.connBean;
}
public void setConnParam(ConnParam cp)
{
this.cp=cp;
}
private Connection createConnection() throws Exception {
return DriverManager.getConnection(cp.getUrl(), cp.getUserName(),cp.getPassword());
}public synchronized void initializePool() throws Exception {
if (cp == null) cp=new HesConnParam();
if (poolsize < 5) poolsize=5;
try {
Class.forName(cp.getDriver());
for (int i = 0; i < poolsize; i++) {
Connection con = createConnection();
if (con != null) {
ConnBean connBean = new ConnBean(con);
addConnection(connBean);
}
}
isInit=true;
} catch (Exception e) {
System.err.println(e.getMessage());
throw new Exception(e.getMessage());
}
}private void addConnection(ConnBean connbean) {
if (pool == null) pool = new Vector(poolsize);
pool.addElement(connbean);
}public synchronized void close(Connection con) {
for (int i = 0; i < pool.size(); i++)
{
ConnBean connBean = (ConnBean)pool.elementAt(i);
if (connBean.getConnection() == con)
{
connBean.setInuse(false);
break;
}
}
}public synchronized Connection getConnection() throws Exception {
ConnBean connBean = null;
for (int i = 0; i < poolsize; i++)
{
connBean = (ConnBean) pool.elementAt(i);
if (connBean.getInuse() == false)
{
connBean.setInuse(true);
return connBean.getConnection();
}
}
try
{
Connection con = createConnection();
connBean = new ConnBean(con);
connBean.setInuse(true);
pool.addElement(connBean);
poolsize++;
}
catch (Exception e)
{
System.out.println(e.getMessage());
throw new Exception(e.getMessage());
}
return connBean.getConnection();
}public synchronized void emptyPool() {
if(pool ==null) return;
for (int i = 0; i < poolsize; i++)
{
ConnBean connBean = (ConnBean) pool.elementAt(i);
if (connBean.getInuse() == false)
{
connBean.close();
}
else
{
try {
java.lang.Thread.sleep(2000);
connBean.close();
} catch (InterruptedException ie) {
System.err.println("关闭连接池出错:"+ie.getMessage());
}
}
}
}
public void reSetPool()
{
emptyPool();
pool.removeAllElements();
poolsize = 5;
connBean = null;
cp=null;
isInit=false;
}
}
package dbpool;public abstract class ConnParam {
public final String ORADRIVER="oracle.jdbc.driver.OracleDriver";
public final String SQLSERVERDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
public abstract String getDriver();
public abstract String getUrl();
public abstract String getUserName();
public abstract String getPassword();
}