hi,
in your case, you should use a connection pool in your application instead
of using a global variable in your servlet or tying to establish a database
connection for each request...
1. servlet is multi-threaded, one database connection cannot be shared among
multiple threads.
2. sun's jdbc-odbc bridge is not thread-safe.
and more...:)
>From: zengjj <[EMAIL PROTECTED]>
>
>Hi there,
>Now I use the javawebserver2.0 to develope a three-tier Database
>Applications.
>The client want to query the database in the applet through our servlet.
>Because it usually take serveral minuters to build a connection, so I use a
>global Connection variable,
>this connection will be built in the init function.
>And all request will use this global Connection
>variable to query the database. Certainly I ensure the only a request can
>aceess the variable at the same time.
>I test the servlet using the servletrunner. There are no
>problem in all cases.
>But when I use the servlet in the javawebserver2.0(trial version) and
>connect the oracle
>database, I found a problem:
> first query has no problem, but later query will hang forever (do not
>return).
>
>
>The problem do not happen when connecting other database. If using the
>servletrunner to test this servlet, it can connect to all database
>including the oracle database too.
>
>My oracle version is 7.3.3 in the WindowsNT.
>
>Following is my code segment:
>
>
>public class MapdPHServlet extends HttpServlet
>{
>Connection connection ;
>
>public MapdPHServlet()
>{
> super () ;
>try
> {
> String URL=new String("jdbc:odbc:testdb");
> Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
> connection = DriverManager.getConnection(URL);
> }
> catch (Exception e) {System.out.println ("# Initialize Error : " +
> e.toString()) ;} ;
>}
>
>public void init (ServletConfig config) throws ServletException
>{
> super.init (config) ;
> System.out.println (" # Initalize MapdPH Servlet...") ;
>}
>
>public void destroy()
>{
> super.destroy();
> try
> {
> connection.close();
> }
> catch (Exception e) {System.out.println ("# Destroy MapdPH Servlet
>Eorror") ;} ;
> System.out.println (" # Destory...") ;
>}
>
>/************* doPost() ***********************/
>
>protected void doPost (HttpServletRequest req,
> HttpServletResponse res)
> throws ServletException,IOException
> {
>// do a simple query and return the result to the client
>// I ensure there are only a request at the same time
> try {
>
> Statement statement=connection.createStatement();
> String SQLStatement = "Select * from person";
> if( statement.execute(SQLStatement) )
> { //send the result to the client
>.....
> }
> else // with Result Set
> {
> }
>
> statement.close();
> }
> catch (Exception e)
> {
> System.out.println (e) ;
> }
>
>
> } // end of doPost()
>
>
>Do you think it is my problem or the javawebserver's problem? Can you give
>me some
>suggestion to deal with the problem? At present, I build the connection in
>the doPost and
>close the connection before exit the doPost in order to solve this problem.
>
>By the way, there are some parameters in the javawebserver:
>Service Tuning ----- General ------------ Capacity
> --- Handler Threads
> --- Connection Persistence
>I found the javawebserver often hang when there are two many users(about
>50)
>accessing the server simultaneously if I use the default value of these
>parameters.
>Even if I maximize all parameters, the javawebserver still hang
>occasionally.
>Do you think it is my problem or the javawebserver's problem?
>
>
>
>
>thanks in advance,
>
>
>jianjiang zeng
>
>________________________
>Are you ChinaRen?
>感受中国人的电子生活
>http://www.chinaren.com
>
>___________________________________________________________________________
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff SERVLET-INTEREST".
>
>Archives: http://archives.java.sun.com/archives/servlet-interest.html
>Resources: http://java.sun.com/products/servlet/external-resources.html
>LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html