webForumDet fria alternativet

Java - ConnectionPool för databaser

1 svar · 4 792 visningar · startad av Viktor

ViktorMedlem sedan aug. 20021 752 inlägg
#1

Här är en connection pool för databas anslutningar som jag har gjort i Java, jag har använt den på min hemsida i över 1 år nu utan några som hellst problem.

Koden som följer här nedan är ett exempel program som visar hur man använder min PoolManger, alla Java filer finns med i den bifogade zip filen.

/**
 * Simple test program for the Database PoolManager
 */
import java.sql.Connection;
import java.sql.SQLException;

import com.vgsoftware.dbpool.PoolManager;
import com.vgsoftware.dbpool.IConnectionPool;

public class DBPoolTest
{
	public static void main(String[] args)
	{
		try
		{
			//creates a new poolmanager object.
			IConnectionPool pm=new PoolManager("jdbc:mysql://192.168.0.12/test", //sökväg till databasen
				"com.mysql.jdbc.Driver", //drivrutin
				"super_user", //användarnamn
				"super_password", //lösenord
				5, //anslutningar vid start
				8, //max antal anslutningar
				300); //antal sekunder mellan varje städning, vid en städning tas glömda/stängda anslutningar bort och nya skapas

			//get a connection from the poolmanager
			Connection conn=pm.getConnection();

			//use connection

			//release connection back to the poolmanager
			pm.releaseConnection(conn);
			
			//get another connection
			Connection conn2=pm.getConnection();
			
			//use connection for somthing else
			
			//release connection back to the poolmanager
			pm.releaseConnection(conn2);

			//shutdown the poolmanager, closes all connections.
			pm.shutdown();
		}
		catch(SQLException sql)
		{
			sql.printStackTrace(System.err);
		}
		catch(ClassNotFoundException cnfe)
		{
			cnfe.printStackTrace(System.err);
		}
	}
}

Kod

EDIT: Ändrade lite i koden eftersom jag hade glömt att använda mitt interface :)

/Viktor

jmeMedlem sedan maj 20012 237 inlägg
#2

Hittade en bugg i Viktors kod som gör att den sover endast i x antal ms och inte i x antal sekunder, som det ska vara.

Har mailat Viktor om detta. :)

Finns på raderna 57 resp. 64 i klassen DBConnectionPool.

cleaner=new Cleaner(cleanInterval,this); <- sätt this. framför cleanInterval

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)