Osagie

-----Original Message-----
From: osagie uwaifo [mailto:osagieuwa...@gmail.com] 
Sent: Friday, August 14, 2015 10:49 AM
To: Tomcat Users List
Subject: Re: Need help understanding DB connection versus servlet request life 
cycle

> Chris,
> 
>    Why don't you allow tomcat manage the connection for you?
> 
> http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
> 
> It is a lot easier that way. Do you need examples?

Thanks for your reply and the link.  I'll read up on that.  Yes, I probably 
need examples of hooking up the connection pool to myBatis.  The page does say 
this:

> How to use 
> Usage of the Tomcat connection pool has been made to be as simple as possible,
> for those of you that are familiar with commons-dbcp, the transition will be 
> very
> simple. Moving from other connection pools is also fairly straight forward.

I have no experience with either commons-dbcp or using connection pools, so for 
me it does not seem "fairly straight forward".  :-)  But I will keep reading 
and Google how to connect myBatis to the Tomcat connection pool.  Thanks for 
the suggestion!

> On Fri, Aug 14, 2015 at 9:12 AM, Cris Berneburg - US <cberneb...@caci.com>
> wrote:
> 
> > BACKGROUND:  I've been doing Java servlet coding for about 2 years and 
> > need help understanding something.  I work on a legacy JSP and 
> > servlets web application project using Tomcat.  Previously all the SQL 
> > was embedded right into the Java and JSP code.  I added the myBatis 
> > framework and moved all the SQL to mappers.  Also previously, every 
> > SQL statement had its own separate DB connection instantiated and 
> > opened but not closed.  I changed that so each servlet request would 
> > have only one open DB connection by adding a ServletRequestListener 
> > that opens the sqlSession in requestInitialized and closes it in 
> > requestDestroyed.
> >
> > PROBLEM: When running in my IDE in my dev environment, various random 
> > myBatis calls in the JSP pages would fail.  After one would fail, all 
> > the rest would fail too.  There were 3 repeated phrases - 
> > NullPointerException, PersistenceException, and ExecutorException Executor 
> > was closed.
> >
> > DEBUGGING: It appeared the DB connection was being closed before the 
> > page was finished rendering.  That meant the MyBatis 
> > ServletRequestListener requestDestroyed handler was being triggered 
> > before the JSP page was finished being served.  When I commented out 
> > the sqlSession.close statement the JSP page worked OK.
> >
> > WORK-AROUND: I added a keepConnectionOpen flag in my development 
> > configuration file and coded the ServletRequestListener 
> > requestDestroyed handler to not close the sqlSession if the flag was 
> > true.  The JSP page now loads without error.
> >
> > NOTE 1: While there being only one open SQL session per servlet 
> > request open at a time is an improvement, it bothers me that the DB 
> > connection is not being explicitly closed.
> >
> > NOTE 2: The problem does not currently happen in our test environment.
> >
> > NOTE 3: Our web site has low traffic volume.
> >
> > QUESTION(s) 1: Why is the ServletRequestListener requestDestroyed 
> > handler triggered before the JSP page is finished?  Is it due to my 
> > IDE or Tomcat or something else?  My interpretation is that the IDE is 
> > handling the processing differently than Tomcat somehow, although I 
> > don't understand that since the IDE is invoking Tomcat.  Should I be 
> > concerned that the problem will eventually happen in my test and 
> > future production environments?
> >
> > QUESTION 2: Is there a better way to manage DB connections anyway?
> >
> > DEVELOPMENT ENVIRONMENT:
> > OS - Windows 7 Pro SP1 64-Bit
> > IDE - IntelliJ Idea 12.1.6
> > TOMCAT - 6.0.37
> > JAVA - JDK 1.6.0.24
> >
> > TEST ENVIRONMENT:
> > OS - Windows Server 2012 R2 Standard 64-Bit TOMCAT - 6.0.37 JAVA - JRE 
> > 1.8.0.45
> >
> > NOTE 4: My customer uses Tomcat 6, so I must use that too.
> >
> > You read down this far?  Thanks for your time, help, and encouragement.
> > :-)
> >
> > --
> > Cris Berneburg, Lead Software Engineer, CACI
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: users-h...@tomcat.apache.org
> >
> >
> 
> 
> --
> Thanks,
> Osagie Uwaifo

Reply via email to