You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Satish Plakote <ps...@controlnet.co.in> on 2004/11/23 02:43:21 UTC

problem with simultaneous query submissions

hi,
i am developing a search  engine for my small database.

I have written a servlet that takes the input from user , queries the database and creates objects of the information that is
recieved. These objects (approximatley 100000 )  are stored in the  ArrayList which put in the session.using session.putAttribute()

While testing i noticed that if i open two browsers,with two different session ID, if submitted simultaneoulsy , one browser stops
execution. i.e one instance of the servlet stops.. where as the other one proceeds fine..This happens for n broswers..
There is no problem with database connection as i have tested it.

My servlet is only extending the HttpServlet.And my arraylist is not a class instance variable.each instance of the servlet is
expected to keep its own copy..

I am not able to figure out what is the problem..

Pls help..
rgds
satish


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


RE: problem with simultaneous query submissions

Posted by Satish Plakote <ps...@controlnet.co.in>.
here is my dopost method


 // Code starts here

       public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException
    {
        System.out.println("Inside doPost");

        String  strQueryFlag =req.getParameter("new");

        if(Integer.parseInt(strQueryFlag.toString())==NEW_QUERY)
        {
           System.out.println("New Search ..."+strQueryString);
           Query query = null;
           session.removeAttribute("BookObjects");
           ArrayList arLstBookDetails = new ArrayList(10000);

           try {
                 // Code to get data from Database or file
             } catch (Exception e) {
                    e.printStackTrace();
              }
           try{
               searchlog.println("--Creating  objects--"+" "+session.getId()+" "+queryString);
               StringBuffer strDesc      = null;
               StringBuffer strBookID    = null;
               StringBuffer strItemName  = null;
               StringBuffer strItemCode  = null;
               StringBuffer strPrice     = null;
               StringBuffer strPageID    = null;
               StringBuffer strBookName  = null;
               StringBuffer strUrl       = null;
               StringBuffer strImage     = null;
               for (// access data one by one from structure )
                 {
                    try{
                         // for each element
                        strDesc      = // get the data and store it
                        strBookID    = // get the data and store it
                        strItemName  = // get the data and store it
                        strItemCode  = // get the data and store it
                        strPrice     = // get the data and store it
                        strPageID    = // get the data and store it
                        strBookName  = // get the data and store it
                        strUrl       = // get the data and store it
                        strImage     = // get the data and store it
                        strPageID    = // get the data and store it

                        if(hBookFromLucene.containsKey(strBookID.toString()))
                        {
                            BookDetails BKDetails=(BookDetails)hBookFromLucene.get(strBookID.toString());
                            BKDetails.addPageDetails(strPageID,strPrice,strItemName,strDesc,strItemCode,strImage,strUrl);
                        }
                        else
                        {
                            BookDetails BKDetails= new BookDetails(strBookName,strBookID);
                            BKDetails.addPageDetails(strPageID,strPrice,strItemName,strDesc,strItemCode,strImage,strUrl);
                            hBookFromLucene.put(strBookID.toString(),BKDetails);
			   	   // adding objects to arraylist
                           arLstBookDetails.add(BKDetails);
                         }
			  // one  more structure to store all objects

m_objallBookDetails.addBook(strBookName,strBookID,strPageID,strPrice,strItemName,strDesc,strItemCode,strImage,strUrl);
                        }catch(Exception e)
                        {
                            System.out.print("SearchDataBean: createBookObjects 1 "+e.getMessage());
                            e.printStackTrace();
                        }
                    } // end of for
                    strBookName  =  strBookID  =  strPageID = strPrice = strItemName = strDesc = strImage = strUrl = null;
                }

                searchlog.println("Putting data for session "+session.getId()+" "+arLstBookDetails.size());

     		    // These two 	structures together can store 100000 data individually in session.
                session.setAttribute("BookObjects",arLstBookDetails);
		    session.setAttribute("AllBookObj",m_objallBookDetails);
                searchlog.println(" --- Completed--- "+arLstBookDetails.size());

        }catch(Exception e)
        {
            System.out.println("SeachDataBean:getResultData: ");
            e.printStackTrace();
        }
    }

 // Code ends here

The reason i am storing the data is session is the the user is given a lot of filtering options and i don't want to go back to my
data source retrieve data and show.. all the filtering has to be done from objects in memory so thatit takes the minimum possible
time.

is the huge amount of  data that i am storing that causes the problem ???

rgds
satish

-----Original Message-----
From: QM [mailto:qm300@brandxdev.net]
Sent: Tuesday, November 23, 2004 7:36 AM
To: Tomcat Users List
Subject: Re: problem with simultaneous query submissions



Please post a *new* message when writing to the list.  Replying to an
old (unrelated) message confuses thread-aware mailers, which makes
your question harder to find (and thus answer).


On Tue, Nov 23, 2004 at 07:13:21AM +0530, Satish Plakote wrote:

: I have written a servlet that takes the input from user , queries the database and creates objects of the information that is
: recieved. These objects (approximatley 100000 )  are stored in the  ArrayList which put in the session.using
session.putAttribute()

You're storing an ArrayList of 100,000 elements in the user session?
That's bound to cause problems...  For one, think of the amount of data
being pulled back from the database, not to mention the memory used by
these objects.

You'd do well to limit the scope of the DB result list, even if that's
not (directly) related to the problem.


: While testing i noticed that if i open two browsers,with two different session ID, if submitted simultaneoulsy , one browser stops
: execution. i.e one instance of the servlet stops.. where as the other one proceeds fine..This happens for n broswers..

Do you open two different browsers, or two windows of the same browser?



: There is no problem with database connection as i have tested it.

Exactly how have you tested this?



: My servlet is only extending the HttpServlet.And my arraylist is not a class instance variable.each instance of the servlet is
: expected to keep its own copy..

Post the code, and someone here may be able to take a look at it.

-QM

--

software  -- http://www.brandxdev.net
tech news -- http://www.RoarNetworX.com


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Re: problem with simultaneous query submissions

Posted by QM <qm...@brandxdev.net>.
Please post a *new* message when writing to the list.  Replying to an
old (unrelated) message confuses thread-aware mailers, which makes
your question harder to find (and thus answer).


On Tue, Nov 23, 2004 at 07:13:21AM +0530, Satish Plakote wrote:

: I have written a servlet that takes the input from user , queries the database and creates objects of the information that is
: recieved. These objects (approximatley 100000 )  are stored in the  ArrayList which put in the session.using session.putAttribute()

You're storing an ArrayList of 100,000 elements in the user session?
That's bound to cause problems...  For one, think of the amount of data
being pulled back from the database, not to mention the memory used by
these objects.

You'd do well to limit the scope of the DB result list, even if that's
not (directly) related to the problem.


: While testing i noticed that if i open two browsers,with two different session ID, if submitted simultaneoulsy , one browser stops
: execution. i.e one instance of the servlet stops.. where as the other one proceeds fine..This happens for n broswers..

Do you open two different browsers, or two windows of the same browser?



: There is no problem with database connection as i have tested it.

Exactly how have you tested this?



: My servlet is only extending the HttpServlet.And my arraylist is not a class instance variable.each instance of the servlet is
: expected to keep its own copy..

Post the code, and someone here may be able to take a look at it.

-QM

-- 

software  -- http://www.brandxdev.net
tech news -- http://www.RoarNetworX.com


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org