Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > static method and variables in servlets and APIs' classes

Reply
Thread Tools

static method and variables in servlets and APIs' classes

 
 
Garg
Guest
Posts: n/a
 
      02-18-2008
Hi All,

In my current project i found that a large number of methods are
public static. I am not getting why we need static methods and
variables in servlets and apis' as we all know that on each request a
new instance of servlet is been created.

I tried to find the answer but i confused some people take about
different instances of one object of servlet and some talk about
different treads of that same instance. Now i am trying to relate the
servlet and api's object, instance, treads with static variables and
method defined.

Please help in that.

Thanks
Tarun Garg
 
Reply With Quote
 
 
 
 
Stanimir Stamenkov
Guest
Posts: n/a
 
      02-18-2008
Mon, 18 Feb 2008 10:00:44 -0800 (PST), /Garg/:

> In my current project i found that a large number of methods are
> public static. I am not getting why we need static methods and
> variables in servlets and apis' as we all know that on each request a
> new instance of servlet is been created.


Speak for yourself, I know just the opposite: while not requirement
(AFAIK) a single servlet instance handles all the requests. Tagging
a servlet class with the SingleThreadModel [1] interface may make
the servlet container create different servlet instances to handle
the different requests but may synchronize the access to a single
servlet instance, also.

[1]
http://java.sun.com/products/servlet...readModel.html

--
Stanimir
 
Reply With Quote
 
 
 
 
Mark Space
Guest
Posts: n/a
 
      02-18-2008
Garg wrote:
> Hi All,
>
> In my current project i found that a large number of methods are
> public static. I am not getting why we need static methods and


Java, and servlets, is just programming. You make static methods and
variables in a servlet for the same reason you'd make them in a regular
Java program.

> variables in servlets and apis' as we all know that on each request a
> new instance of servlet is been created.


Er, no, we don't know that. It's not true. One instance is created of
each servlet, then it gets re-used for all requests until it's
destroyed. Or that's the most common implementation anyway. But
certainly nothing requires or implies that one instance is created per
request. Not even SingleThreadedModel does that.

>
> I tried to find the answer but i confused some people take about
> different instances of one object of servlet and some talk about
> different treads of that same instance. Now i am trying to relate the


Your English is so bad here I can barely guess what you are saying. Do
you mean "some people take" or "some people talk?"

Any, please review your posts better before you send them, you'll better
answers.

A public static variable is a global variable, and it would be the same
in a regular Java program. A private static variable could be used as a
singleton.

Static methods are useful for decomposition when there's no reason to
attach a method to a specific object. They're just generic operations.
Often they get used for factory methods, but there are many other uses.

If you have some questions about a specific API or method or variable,
please say what it is, since that might also bear on the question.
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      02-19-2008
Stanimir Stamenkov wrote:
> Mon, 18 Feb 2008 10:00:44 -0800 (PST), /Garg/:
>
>> In my current project i found that a large number of methods are
>> public static. I am not getting why we need static methods and
>> variables in servlets and apis' as we all know that on each request a
>> new instance of servlet is been created.

>
> Speak for yourself, I know just the opposite: while not requirement
> (AFAIK) a single servlet instance handles all the requests. Tagging a
> servlet class with the SingleThreadModel [1] interface may make the
> servlet container create different servlet instances to handle the
> different requests but may synchronize the access to a single servlet
> instance, also.
>
> [1]
> http://java.sun.com/products/servlet...readModel.html


It is also possible that the servlet container creates multiple instances of a
servlet, but not nearly as many as there are requests. This is true for
clustered servers, for example, and certainly useful for multi-processor
systems. You very well could see one servlet instance per processor hardware
thread or core. You could theoretically see more than one instance per core,
if a server were smart enough to figure out that I/O or other blocking
operations would make that more efficient.

The bottom line is that you cannot count on there being more than one instance
of a servlet active at a time, nor can you count on there being only one.

--
Lew
 
Reply With Quote
 
Arne Vajhøj
Guest
Posts: n/a
 
      02-19-2008
Lew wrote:
> It is also possible that the servlet container creates multiple
> instances of a servlet, but not nearly as many as there are requests.
> This is true for clustered servers, for example, and certainly useful
> for multi-processor systems. You very well could see one servlet
> instance per processor hardware thread or core. You could theoretically
> see more than one instance per core, if a server were smart enough to
> figure out that I/O or other blocking operations would make that more
> efficient.


????

I can really not see the link between cores and instances and
between blocking operations and instances.

Arne
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      02-19-2008
Arne Vajhøj wrote:
> Lew wrote:
>> It is also possible that the servlet container creates multiple
>> instances of a servlet, but not nearly as many as there are requests.
>> This is true for clustered servers, for example, and certainly useful
>> for multi-processor systems. You very well could see one servlet
>> instance per processor hardware thread or core. You could
>> theoretically see more than one instance per core, if a server were
>> smart enough to figure out that I/O or other blocking operations would
>> make that more efficient.

>
> ????
>
> I can really not see the link between cores and instances and
> between blocking operations and instances.


I see my mistake - this would normally be handled by spawning a new thread on
the current instance, not by creating new instances.

Never mind.

--
Lew
 
Reply With Quote
 
Garg
Guest
Posts: n/a
 
      02-20-2008
This is what i understood.
* Multi threading means that same instance of a program is running. It
doesn't mean that two separate instances of the program is running.
* Servlet container is responsible for the creation, execution and
destruction of the servlet.
* Instance variables are defined in the class and they are tied with
the instance of the class.
* To make the servlet threads safe declare all the variable in the
method. It makes them local variables otherwise they will remain as
instance variables.
* By putting the synchronize code block, thread safe can be achieve.
* And by using interface SinglethreadModel.
* A public static variable is a global variable.
* A private static variable can be use as singleton.
* Static methods put the method to the class level so creation of the
class object is not required to call that method.

I do have more questions but i will put them once my understanding
gets approved.

Thanks for time
Tarun Garg
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Why can nsmc, local classes or anonymous classes have static members? Rit Java 23 01-03-2010 05:54 PM
Java servlets: Hi All! I want to display xml file in browser using servlets datta.saru Software 0 05-15-2006 03:30 PM
Including Web Services in Java Classes and Servlets Davo C S Java 0 08-09-2004 05:38 PM
Modifiers applied to attributes, local variables, member functions, classes and inncer classes ! Razvan Java 11 07-17-2004 08:57 PM
static variables in servlets Suresh Java 4 09-10-2003 07:54 PM



Advertisments