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