RE: problem with simultaneous query submissions

2004-11-23 Thread Phillip Qin
Your problem shouldn't occur unless you use instance variables in your
servlet. A quick fix would be put

synchronized (session) {

}

Block outside your code.

-Original Message-
From: Satish Plakote [mailto:[EMAIL PROTECTED] 
Sent: November 22, 2004 10:10 PM
To: Tomcat Users List
Subject: RE: problem with simultaneous query submissions


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(1);

   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,strItem
Name,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 twostructures together can store 10
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 [mail

problem with simultaneous query submissionS

2004-11-23 Thread Satish Plakote
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(1);

   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 twostructures together can store 10 
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



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



RE: problem with simultaneous query submissions

2004-11-22 Thread Satish Plakote
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(1);

   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 twostructures together can store 10 
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:[EMAIL PROTECTED]
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 conf

Re: problem with simultaneous query submissions

2004-11-22 Thread QM

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 10 )  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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



problem with simultaneous query submissions

2004-11-22 Thread Satish Plakote

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 10 )  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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]