Just a recommendation - instead of doing your own database stuff, try out iBATiS, I don't think you'll be sorry ...

Heather Marie Buch wrote:

Yes yes! The finally block has got to be it! I was closing the connection
just before returning a user, forgetting that if authorization failed I
would never get far enough in the code to close the connection and return
the user.

That explains a lot. Today, I rewrote all my database access methods to
open and close their own connections (instead of one connection per user
session). After I did this, I was able to make more than 8 requests in the
case of a *sucessful* login (using the back button and re-entering the
password). However, in the case of an unsuccessful login, (where my
authentication method throws an error if the password doesn't match the db
password), it still only gave me 8 tries. This must have been because I
was throwing the error before I got to the _conn.close() line in my
authentication method. So, the finally block *must* be the solution. I
can't wait to try it tomorrow. I'm sure that things will now work in the
case of successful or unsuccessful logins. I will let you know!

Best,

Heather

On Wed, 7 Jan 2004, Geeta Ramani wrote:



Heather:

Sounds like you nailed down your problem.  You defintely do not want to hang on to a
connection longer than absolutely necessary.  So if you get a connection from your
pool at say the start of a database access method, make sure you release it back to
the pool at the end of that method.  Plus make sure you place this code in a
**finally* block - so regardless of whether or not your database query was a success,
the connection is released to the pool..

Also the earlier suggesstion of having just one connection in the pool during
development works perfectly - we have used it for a while now and have been able to
uncover errors we otherwise would not have..

Good luck!
Geeta

Heather Marie Buch wrote:



Hi,

PROBLEM SOLVED (sort of)

It was because I failed to close the database connections. Well, I closed
them too late.

I had things set up so that when a user logs on, a "service" object is
created for them. The Action servlet calls the service and receive
business objects. The service talks to the database and creates
business objects to give back to the action servlets. I had been
fetching a new connection from the pool upon initialization of the
service, and returning the connection to the pool when the
user logged out and the service object was destroyed.

When I change my code so that the "service" creates a new db
connection each time it interacts with the db, and returns the connection
in the same method, the server no longer hangs. So I guess I will have to
change it to "one connection per query" instead of "one connection per
user".

Does this sound right?

Thanks all!

Heather Buch

On Tue, 6 Jan 2004, Anthony Martin wrote:



I've had something like that happen when I call
getDataSource(request).getConnection() and forget to close them.  After a
finite number of requests, the server appears to hang.  Actually, depending
on the settings, it will timeout.  But how you handle the exception could
prevent it from being properly reported.


On 1/6/04 11:38 AM, in article [EMAIL PROTECTED], "Heather Marie Buch" <[EMAIL PROTECTED]> wrote:



Manfred Wolff wrote:



Heather.

Have you studied the tomcat logs?


Yes, I have. This is the only thing that is remotely interesting.
In localhost_log.2004-01-06.txt I get this:

2004-01-06 03:38:41 action: null
2004-01-06 03:40:08 action: null
2004-01-06 03:40:12 action: null
2004-01-06 03:40:14 action: null
2004-01-06 03:40:16 action: null
2004-01-06 03:40:18 action: null
2004-01-06 03:40:21 action: null
2004-01-06 03:40:23 action: null

(corresponding to the 8 times I try to log in). I don't really know where it
is
coming from. I would like to know what is generating the above, so I could to
in and modify the logging
statements to produce a bit more detail!

I also have log4j statements in my own code and have been testing this. But I
can't generate any error or anything beyond the normal output, 8 times.

What is interesting is that it always fails on the 9th try. I don't think it
is
a matter of seconds either. I have tested over a longer period (10 minutes),
but
it still gives me 8 requests before it hangs.

And Geeta Ramani - thanks. I will take another look at the jdbc stuff!

Best,

Heather Buch





Manfred Wolff

Heather Marie Buch wrote:



Hi all,

If I submit the same page more than 8 times, my server dies and I have to
restart. For example, the first 8 times I enter the wrong password, struts
will simply return me to my original form with an error message. However,
the 9th time - the server hangs.

This also occurs if I enter the correct password, then press the
"back" button and return to the original login screen and submit again. I
can only repeat this 8 times. The server hangs on the 9th try.

I am using:

tomcat 4.1.12
httpd 2.0.43
mysql 3.23.53
struts 1.1

I am not even sure if this is a struts problem. I suspect it is because I
tried that back  button trick with a plain old servlet, and I was able to
do it more than 9 times.

Any help would be greatly appreciated! My boss wants users to be able to
try passwords more than 9 times!

Thanks,

Heather Buch



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-- Brice D. Ruth Sr. IT Analyst Fiskars Brands, Inc.


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to