Re: Help Needed with Connection Pooling for Java Swing Based - Mailing list pgsql-jdbc

From Shanmugasundaram Doraisamy
Subject Re: Help Needed with Connection Pooling for Java Swing Based
Date
Msg-id 1048747709.15435.3.camel@vpsd2.ceedees.com
Whole thread Raw
In response to Re: Help Needed with Connection Pooling for Java Swing Based  ("Scot P. Floess" <floess@mindspring.com>)
Responses Re: Help Needed with Connection Pooling for Java Swing Based
List pgsql-jdbc
Dear Derek, Scott & Barry,
           Thank you for your replies.  But, when I give the system.exit call
the whole application is closed.  This is not what I want to do.  I just
want to close only that particular form/ window alone and return the
connection to the pool.  Please let me know how this can be achieved.
Thanking you,

Yours sincerely,

Shan.

On Thu, 2003-03-27 at 04:09, Scot P. Floess wrote:
> Derek:
>
> I see what you mean.
>
> Regarding needing to call System.exit...my guess is the Swing/AWT
> threads are user threads (as opposed to daemon) and that is why one must
> call System.exit()...
>
> Scot
>
> Derek S wrote:
>
> > Pardon my inaccuracy.  I should have said "Realizing" instead of
> > instantiating.  "Realizing" is the name that the AWT developers gave
> > to the process  (which is encapsulated in the AWT's component
> > implementation) of actually allocating the system resources needed to
> > display the GUI widgets.  Typically, it happens when you call pack or
> > setVisible(true) on a Window, Frame or Dialog. When a component is
> > realized, it checks to see if the dispatcher thread is running, and if
> > not, starts it.  Depending on what you're using, it may also start
> > other threads to support features like the Pluggable Look and Feel and
> > so on.  As far as I know, it's only possible to have one AWT Event
> > Dispatch thread.
> >
> > Bringing us back to the original topic, Once the AWT threads are
> > running, it's basically hit-or-miss whether the app will stop unless
> > System.exit is explicitly called or you set the default close
> > operation on your frame to EXIT_ON_CLOSE (which just calls System.exit
> > for you), so this has nothing to do with JDBC or PostgreSQL's driver.
> >
> > Scot P. Floess wrote:
> >
> >> Derek:
> >>
> >> Are you sure instantiating a Swing component launches a new thread?
> >> Simply instantiating 2 JButtons will launch 2 threads?  I don't think
> >> that is the case.
> >>
> >> Derek S wrote:
> >>
> >>> Instantiating any Swing component does in fact start a new thread -
> >>> the AWT Event Dispatch thread.  My experience with it has been that
> >>> this thread quite often doesn't terminate the way you might expect
> >>> when the main method ends.  This is a well known issue that Swing
> >>> and AWT programmers simply have to deal with and has absolutely
> >>> nothing to do with JDBC.  Generally speaking, all Swing/AWT based
> >>> applications call System.exit when they are finished doing whatever
> >>> it is they do in order to ensure that the AWT Event Dispatch thread
> >>> shuts down properly.
> >>>
> >>> Barry Lind wrote:
> >>>
> >>>> I just ran your test case and everything seems to be working
> >>>> correctly as far as I can tell.  The program creates one and only
> >>>> one connection to the database.  I don't see multiple connections
> >>>> created as you are reporting.
> >>>>
> >>>> I don't know anything about swing, but it is clear that the code
> >>>> for swing you have below isn't correct.  Because with this swing
> >>>> call the program doesn't exit.  It seems the swing code is starting
> >>>> some other threads that are running and thus the main program
> >>>> doesn't exit until those threads stop running (and I don't know
> >>>> what swing calls are necessary to stop the swing threads from
> >>>> running).
> >>>>
> >>>> So with the swing call in place I have to ctrl-C to stop the app
> >>>> from running, but from the jdbc side of things everything seems to
> >>>> be working correctly.
> >>>>
> >>>> Perhaps I don't understand the problem you are seeing?
> >>>>
> >>>> thanks,
> >>>> --Barry
> >>>>
> >>>>
> >>>> Shanmugasundaram Doraisamy wrote:
> >>>>
> >>>>> Dear group,
> >>>>>
> >>>>> We are having some problems when using JDBC Connection Pool using
> >>>>> Postgrsql Jdbc3PoolingDataSource.
> >>>>>
> >>>>> The Pool behaves fine if there is no Swing Component in the Program.
> >>>>> If there is a swing Component ,then the connection seems to be not
> >>>>> returning to the pool and calling for an additional instance of
> >>>>> the class leeds to the creation of fresh Connection objects ,at
> >>>>> times it even exceeds the maximum number allowed in the pool.
> >>>>> If we go for System.exit(0);(Killing) then only the Connection is
> >>>>> returned .
> >>>>>
> >>>>> But if we comment the swing component line (here in the attached
> >>>>> Program a JOptionPane is Used) then the pool behaves fine.
> >>>>>
> >>>>>
> >>>>> Herewith Iam attaching a Program which is behaving as detailed.
> >>>>>
> >>>>> Any Help is Welcome.
> >>>>>
> >>>>> ##################################################################
> >>>>>
> >>>>>
> >>>>> ##################################################################
> >>>>>
> >>>>> /*
> >>>>>  * ConPool.java
> >>>>>  *
> >>>>>  * Created on 26 March 2003, 11:54
> >>>>>  */
> >>>>>
> >>>>> /**
> >>>>>  *
> >>>>>  * @author  naks from vpsd,Erode
> >>>>>  *   */
> >>>>> import org.postgresql.jdbc3.*;
> >>>>> import java.sql.*;
> >>>>>
> >>>>> public class ConPool {
> >>>>>        Jdbc3PoolingDataSource source = null;
> >>>>>     private Connection conn = null;
> >>>>>        /** Creates a new instance of ConPool */
> >>>>>     public ConPool() {
> >>>>>            }
> >>>>>        /** Setting the Pool which intializes the Pool to 2. */
> >>>>>     public void setPool() {
> >>>>>         // DataSource initialization
> >>>>>         System.out.println("setPool()");
> >>>>>         try {
> >>>>>             System.out.println("setting pool");
> >>>>>             // constructs a pool only when source is not assigned.
> >>>>>             // this will prevent problems if the same pool is set
> >>>>> more than
> >>>>>             // one time
> >>>>>             if (source == null) {
> >>>>>                 source = new Jdbc3PoolingDataSource();
> >>>>>                 // DataSource configuration.
> >>>>>                       source.setServerName("192.168.0.51");
> >>>>>         source.setDatabaseName("kec_test_pool");
> >>>>>         source.setUser("venbro");
> >>>>>         source.setPassword("venbro");
> >>>>>         source.setMaxConnections(2);
> >>>>>                                } else {
> >>>>>                 System.out.println("pool is set");
> >>>>>                 return;
> >>>>>             }
> >>>>>         } catch (Exception loException) {
> >>>>>             // logger.logToFile(loException);
> >>>>>             loException.printStackTrace();
> >>>>>         }
> >>>>>
> >>>>>     } //End of setPool method
> >>>>>           /**
> >>>>>      * Method inserts data to a table "test" which is like
> >>>>>      * create table test (param1 varchar(2),param2 varchar(2)) ;
> >>>>>          */
> >>>>>      public int insertDatas(){
> >>>>>            int count=-1;
> >>>>>              try{
> >>>>>                conn=source.getConnection();
> >>>>>
> >>>>>       PreparedStatement st = conn.prepareStatement("INSERT INTO
> >>>>> test values('P1','P2')");
> >>>>>            count = st.executeUpdate();
> >>>>>
> >>>>>       st.close();
> >>>>>            conn.commit();
> >>>>>       conn.close();
> >>>>>          }
> >>>>>     catch (SQLException ex) {
> >>>>>        count=0;
> >>>>>       ex.printStackTrace();
> >>>>>     }
> >>>>>        return count;
> >>>>>     }//End of Insert Method
> >>>>>               public static void main(String args[]){
> >>>>>                       ConPool cp=new ConPool();
> >>>>>         cp. setPool();
> >>>>>         int sucess_flag=cp.insertDatas();
> >>>>>         System.out.println("Sucess"+sucess_flag);
> >>>>>                /**
> >>>>>           * Upto this level the Connection pooling is working fine .
> >>>>>           * But if this Swing Component is added then it creates
> >>>>> new Connection
> >>>>>           * which is even more than the intial connection of the
> >>>>> pool..
> >>>>>          *  We have to kill the application (System.exit(0))to
> >>>>> remove the Connection
> >>>>>          ** But on commenting line :105 "Swingline " the Pool is
> >>>>> working fine..
> >>>>>                  */
> >>>>>
> >>>>> javax.swing.JOptionPane.showMessageDialog(null,"VENBRO-ERODE","MESSAGE",1);//
> >>>>> Swing line 105
> >>>>>                 }
> >>>>>
> >>>>> }//End of the class
> >>>>> ##########################################################################################
> >>>>>
> >>>>> ###########################################################################################
> >>>>>
> >>>>>
> >>>>> ---------------------------(end of
> >>>>> broadcast)---------------------------
> >>>>> TIP 3: if posting/reading through Usenet, please send an appropriate
> >>>>> subscribe-nomail command to majordomo@postgresql.org so that your
> >>>>> message can get through to the mailing list cleanly
> >>>>>
> >>>>
> >>>>
> >>>> ---------------------------(end of
> >>>> broadcast)---------------------------
> >>>> TIP 5: Have you checked our extensive FAQ?
> >>>>
> >>>> http://www.postgresql.org/docs/faqs/FAQ.html
> >>>>
> >>>
> >>>
> >>> ---------------------------(end of
> >>> broadcast)---------------------------
> >>> TIP 3: if posting/reading through Usenet, please send an appropriate
> >>> subscribe-nomail command to majordomo@postgresql.org so that your
> >>> message can get through to the mailing list cleanly
> >>>
> >>
> >
> >
>
> --
> Scot P. Floess - 27 Lake Royale - Louisburg, NC  27549 - 252-478-8087
>
> Open Source Home Page
> --------------------------------------
> http://javapim.sourceforge.net
> http://jplate.sourceforge.net
> http://jwaretechniques.sourceforge.net
>
> Open Source Project Host
> -----------------------------------------------
> http://sourceforge.net/projects/javapim
> http://sourceforge.net/projects/jplate
> http://sourceforge.net/projects/jwaretechniques
>
>


pgsql-jdbc by date:

Previous
From: Barry Lind
Date:
Subject: Re: JDBC2 driver failure
Next
From: "Scot P. Floess"
Date:
Subject: Re: Help Needed with Connection Pooling for Java Swing Based