Why are you creating your own connection pool? Any good application server
should provide this for you?
Dave Wolf
Internet Applications Division
----- Original Message -----
From: "Bo Xu" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, November 17, 2000 10:40 AM
Subject: Re: Max Open Cursors Exceeded
> Jonathan Baker wrote:
>
> > Unfortunately, no. I just wasn't proofreading my mail. The correct
code
> > should read:
> >
> > try {
> > InitialContext ic = new InitialContext();
> > DataSource ds = (DataSource) ic.lookup(...);
> > Connection c = ds.getConnection();
> >
> > try {
> > ...
> >
> > The point I was trying to make is that using try/finally blocks can keep
> > your connections from being stranded. It also guarantees your statement
> > objects will close, freeing up memory even if there was an exception
thrown
> > during processing.
> >
> > I hope that clears things up!
> >
> > Jonathan Baker
> > Internet Applications Division
> > Sybase, Inc.
> > [...]
>
> Hi :-) Thanks very much for your email! and sorry for bothering you
with
> another question:
>
> 0
> I am trying to develop a simple DBConnection pool, I want to use it in:
> * my Servlet class which is put in the Servlet container of my EJB
container
> * my Session Bean
> the following is my code, if you have time, can you give me some direction
> about it ? -> tell me if my code is right or not? Thanks!
>
> 1 my code
> [a] ******************** the simple DBConnection pool
*********************
>
> public class outsideDBCPHoder implements java.io.Serializable {
> private static outsideDBCPHoder onlyOneInstance;
> private java.util.Vector pool=new java.util.Vector();
>
> private outsideDBCPHoder() {}
>
>
> public static synchronized outsideDBCPHoder getOnlyOneInstance() {
> if (onlyOneInstance == null) {
> onlyOneInstance = new outsideDBCPHoder();
> }
> return onlyOneInstance;
> }
>
>
> public synchronized java.sql.Connection getDBConnection() {
> java.sql.Connection con = null;
> if ( pool.isEmpty() ) {
> con = ...; file://make a new DBConnection
> } else {
> con = (java.sql.Connection) pool.elementAt(0);
> pool.removeElementAt(0);
> }
> return con;
> }
>
> public synchronized void putbackDBConnection( java.sql.Connection con )
{
> if (pool.size() < 8) { // 8 is the MAX number of my pool, it can be
any
> value(10, 100...)
> pool.addElement(con);
> }else{
> ... file://close this con
> con=null;
> }
> return;
> }
>
> public synchronized void closeAllDBConnection() {
> String con=null;
> if ( !pool.isEmpty() ) {
> con=(java.sql.Connection)pool.elementAt(0);
> ...// cole the con
> con=null;
> pool.removeElementAt(0);
> }
> }
>
> protected synchronized void finalize(){
> closeAllDBConnection();
> }
> }
>
> [b] ********how to use this simple DBConnection pool in Servlet
class********
>
> public class servlet_outsideDBCPHoder extends HttpServlet {
> private static outsideDBCPHoder myDBCP
> =outsideDBCPHoder.getOnlyOneInstance();
>
> file://init ...
>
> _service/doGet/doPost{
> java.sql.Connection con= myDBCP.getDBConnection();
>
> ...// use con
>
> myDBCP.putbackDBConnection(con);
> }
>
> protected void finalize(){
> myDBCP.closeAllDBConnection();
> }
>
> }
>
> [c] outsideDBCPHoder is a *SingleTonBean* ->
> * the reason for making it as a SingleTon is:
> try to avoid the problem led by loading/unloading MyServlet several
> times, but perhaps it is not necessary, I am not sure.
> * the reason for that make it Serializable is:
> from the emails in Servlet-List, bean class will be loaded by
> the same ClassLoader, I also don't know if it is nessary.
>
> If you have time, please give me some directions,
> Thanks very much && anyway && in advance! :-)
>
>
> Bo
> Nov.17, 2000
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff EJB-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
>
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".