You could use Thread-local storage, but that's avoiding the point--we want per-session Singletons, not per-Thread Singletons, I think. (Technically, however, we're not dealing with Singletons anymore--it's Thread-Specific Storage, another pattern from Doug Schmidt, the God of Concurrency and Distributed Objects patterns.) Ted Neward Java Instructor, DevelopMentor ( http://www.develop.com ) http://www.javageeks.com/~tneward -----Original Message----- From: Rod McChesney <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] <[EMAIL PROTECTED]> Date: Monday, December 13, 1999 3:17 PM Subject: Re: What is the best way to pass singleton/global information withinclasses/methods of a servlet? >In the presence of multithreading, there is no way to globally access >request-specific information. Each request is running in its own thread >and has its own information, so you can't do any sharing. In practice >this >means that every class that needs request information must have it >passed in somehow, either by creating a new instance for every request >received, or by passing the request info along as a method parameter. > >> Imagine, for example, if every method you write in any Java application >> would need to have "System.out" passed to it, in case there is some >> method that might need to print to the terminal. > >Well, System.out is globally meaningful. HTTP requests are not. And, >just as a design issue, it's a good idea to completely separate classes >that need access to the request from those that do not; that way generic >classes are not incorrectly tied to HTTP. > >Rod McChesney, Korobra > > >Alok Mehta wrote: >> >> A general question about writing servlets... >> >> I would like to have a class or object in my servlet where I can go to find >> out misc. information >> - the HttpServletRequest object >> - authentication information (userid, permissions) >> - database connection information >> - audit management objects, and objects for loggin activity >> etc. >> >> If this was written as an application (instead of a servlet), then I could >> do this using the 'Singleton' design pattern, and create a single instance >> of a class. Or as static methods and variables of a class. But this won't >> work for a servlet, because what's really needed is one instance for each >> 'request/session' that is being processed. >> >> I know that I can tie things together with cookies or HttpSession objects. >> But the problem is that I can't figure out a way around the fact that I >> will need a handle to at least one object (for example, a handle to an >> HttpSession object that could lead me to the other objects). >> >> I don't think this is elegant, because I'd still have to pass an instance >> of that object to every object/method that might need to get some >> information. There doesn't seem to be a global way to get it. This also >> means that many of my methods wouldn't even directly use the object, but >> would have to carry that handle around as a parameter anyway, in case the >> lower level methods need it. >> >> Imagine, for example, if every method you write in any Java application >> would need to have "System.out" passed to it, in case there is some method >> that might need to print to the terminal. >> >> Does anyone else feel this way? Is there a preferred solution to this? Or >> do people write simple servlets where this isn't much of an issue? >> >> Thanks >> Alok Mehta, Research Scientist >> Wadsworth Center, NYS Dept. of Health >> >> ___________________________________________________________________________ >> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >> of the message "signoff SERVLET-INTEREST". >> >> Archives: http://archives.java.sun.com/archives/servlet-interest.html >> Resources: http://java.sun.com/products/servlet/external-resources.html >> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html > >___________________________________________________________________________ >To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >of the message "signoff SERVLET-INTEREST". > >Archives: http://archives.java.sun.com/archives/servlet-interest.html >Resources: http://java.sun.com/products/servlet/external-resources.html >LISTSERV Help: http://www.lsoft.com/manuals/user/user.html ___________________________________________________________________________ To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff SERVLET-INTEREST". Archives: http://archives.java.sun.com/archives/servlet-interest.html Resources: http://java.sun.com/products/servlet/external-resources.html LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
