Hi,

If I understood you correctly, the problem you are trying to solve should 
better be solved by a worker-thread-singleton that is started for example by 
your servlet's init() method.

This worker-thread can easily serialize all incoming requests in a working 
queue (database- or file-based) and your servlet just pushes a job into the 
working queue for the thread.

If you want to wait for your job to be finished, you should either setup a 
cyclic check in the browser (check back for job finished every 2 secs), which 
can put up quite a load on your server, or you implement a listener to your 
w-thread that gets called when the job finishes.
The servlet submitting the job gives the listener as a feedback object to the 
thread and waits for the call back, BUT here you can end up with loads of 
threads, waiting for their job to finish and loads of impatient users clicking 
again, again, again.

Alternatively you can do a fire and forget to the worker thread and have a 
status page for the submitter, where he can check if his entry has been saved.

Best regards 
 
Thomas Strauß

-----Ursprüngliche Nachricht-----
Von: James Black [mailto:[EMAIL PROTECTED] 
Gesendet: Mittwoch, 7. Dezember 2005 03:33
An: Tomcat Users List
Betreff: Re: making a singleton servlet

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Caldarale, Charles R wrote:
>>From: James Black [mailto:[EMAIL PROTECTED] 
>>Subject: re: making a singleton servlet
>>
>>I am going to make my servlet be static, with the hope that 
>>it will only have one instance running, regardless of how 
>>many clients connect to it.
> 
> 
> What do you mean by "servlet be static"?  What syntactical construct are
> you employing?
> 
> If you mean using static fields in your servlet class, then you will
> have to make use of synchronization clauses to insure concurrent
> requests are serialized.  It's my understanding that the container
> (Tomcat or whatever) is free to process as many requests in parallel as
> needed, as well as create multiple servlet instances - see the servlet
> spec.
> 
> What problem are you trying to solve?

  My plan is to try:
public static class SomeServlet extends HttpServlet {  ... }

  That way there should only be one servlet.

  I am writing a servlet to save grades to a database, but,
unfortunately, instructors will procrastinate like students do. So, I
expect that 2000+ instructors will submit their grades in the last hour
or so, before the deadline.  If each instructor had their own db
connection then the system will be useless, as students won't be able to
get connections, since all the connections will be used up.

  For the first test I want to limit them to only one connection that
will read from an input queue, and just process all the grades. Later it
may be bumped up to 20-50 connections, to speed it up.

  That is the basic problem I am trying to solve.

  I am actually using XmlHttpRequest to connect to the servlet so it
doesn't lock up the browser.

- --
Corruptisima republica plurimae leges. [The more corrupt a republic, the
more laws.]
Tacitus from Annals III, 116AD
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)

iD8DBQFDlkneJ/zyYkX46joRAlfpAJ0cdiTxXrSSdLfZ3znd63dSJesvJACgiFes
PfU+fddjZNUPTT1gq0Ft69g=
=tKjO
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
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]

Reply via email to