Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Application Level Variables in a Servlet

Posted on 2002-04-09
6
Medium Priority
?
2,085 Views
Last Modified: 2013-11-24
Can you have application level variables in a servlet?  If so, how can you store an object at that level?  Could you give me a code example please.
0
Comment
Question by:CodeHead
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 9

Expert Comment

by:mmuruganandam
ID: 6929183
Hai CodeHead,

  Whatever you have defined outside all the methods, will be treated as application level scope.  

public class TestServlet extends HttpServlet
{
   private String testString = null;
   public void init(....
   ----
   ----

   public void service(....
   ---
   ---
}

Eventhough, the testString is private, it is visible across users and in application scope.

Any variable that is defined within the method is private to that method.  Any variable that is outside all the methods will be treated in application scope.


All the best

Thanks
Muruganantham
0
 
LVL 1

Expert Comment

by:RichardA
ID: 6929189
Application level variables are declared as "static" varables in the servlet class.  

if you had the following declared in the class

private static int count = 4;

each user accessing the servlet would "see" the same value and once changed any future users accessing would see the changed value.

This works for all type of objects declared as static.
0
 
LVL 4

Accepted Solution

by:
pellep earned 200 total points
ID: 6929230
ServletContext application = getServletConfig().getServletContext();

String somethingToStore = "test";
application.setAttribute("an_appilcation_level_variable", somethingToStore);

String somethingToRetreive = (String) application.getAttribute("an_appilcation_level_variable");
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 2

Expert Comment

by:xxMariusxx
ID: 6929714
The servlet context is in the application scope...so set your attributes there.

If, in your JSP you have:

<jsp:useBean id="myObject" class="my.package.name.MyClass" scope="application" />


In your servlet, you would have the following equivalent code:

Object obj = getServletContext().getAttribute("myObject");
if(obj==null || (!obj instanceof my.package.name.MyClass)) {
   obj = new my.package.name.MyClass();
   getServletContext().setAttribute("myObject", obj);
}

Marius
0
 
LVL 2

Expert Comment

by:xxMariusxx
ID: 6929716
oops...sorry...I put the bang (!) inside the parentheses by accident...my bad.

Marius
0
 
LVL 5

Expert Comment

by:LexZEUS
ID: 6930657
pellep has the correct answer..

application variable can be set using ServletContext.. in one web application (WAR), there will be only one instance of ServletContext ..

comment form RichardA
>Application level variables are declared as "static" varables in the servlet class.  
>if you had the following declared in the class
>private static int count = 4;

There is not necessary to put "static" keyword in class since Servlet XXXX only has 1 instance in the whole web application (WAR), but there may be 1 or more thread accessing the same instance (depends on the request from browser).
Static keyword is needed if you want to access servlet's member from another servlet :
{
 Object o = Servlet123.doSomething();
}

In this case, doSomething should be declared as static so other servlet or classes (even jsp) can execute doSomething().
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question