• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

ServletContextListener Doubt??

 
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Guys,

Actually I was trying to create a sample login screen where I use oracle as backend and I have a simple table that stores the list of usernames and password. I want to use Listeners to connect to my database. So how do I do it?? What do I actually put in my contextInitialized?? I guess that I can connect to the database from the contextInitialized and use contextDestroyed for closing the connection. Am I right?? Then what do I set for <param-name> and <param-value> in the DD??

Also, I have this doubt is that in the example given in the HFSJ book on page 171 states that we already set the dog Breed to GreatDane?? Then what is the real use of using Attributes?? I can well go with a parameter rather than attributes?? Am I confusing myself?? Guys please help!
 
Joe San
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Guys, any thoughts for my post?
 
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Jothi,

Using the <param-name> <param-value> in the DD, you can set the DB URL, user name and password which you can retrieve in the ServletContext using getInitParameter(). You can get only String and NOT Objects using parameter. Also you cannot set the parameters programmatically. You can set an object as an attribute.

For your scenario, you can create a connection object in the contextInitialized() method, getting the context parameters and set the connection object as attribute in the ServletContext. Since ServletContext is available for the whole application, you can get the connection object using the getAttribute() method.

Hope this will clear your doubt.
 
Joe San
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Vijayakumar,

I think, I'm getting this. As you said, I can use any name for the <paran-name> and <param-value> elements, just any name, it can be anything and convert that name which is a String to actual Object using the Listener class and set it as an attribute in the scope that I want.

So when the container starts up, it reads my DD and before I could querry my database, the connection is ready for me. Wonderful concept!

So, is there any other place where I can have a similiar functionality (other than doing it declaratively) wherein I can have the container do all the things beforehand??
 
Ranch Hand
Posts: 381
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Jothi,
I am a bit confused with your post.Generally contextInitailized() and contextDestroyed() which are the call back methods are being used by the container when a new context is initiazed (some startup) and destroyed(some cleanup).
Why are you trying to get the connection object in contextInitialized() method?What's your assumption when a new context should be initialized?
Your context should not be initialized unless you are validated,and to be validated you need a database connection.
 
Joe San
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Sanjeev,

The point is that, contextInitialized and contextDestroyed are not container callback methods, they are the methods in the ServletContextListener interface and they are the ones to run first when the container starts up. So you can do your database connection using this. So when you request for a servlet that has some operations to be carried on with the database, you already have the connection opened.
 
Sanjeev Singh
Ranch Hand
Posts: 381
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Jothi for clarifying,
Well anything which the container calls is callback?
 
VijayKumar Sivagnanam
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
right sanjeev.
 
Joe San
Ranch Hand
Posts: 10198
3
Mac PPC Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks for the information Sanjeev regarding to container callbacks.
reply
    Bookmark Topic Watch Topic
  • New Topic