Justin,

I would be interested in seeing how to read an environment variable from the init 
method of a servlet.

Chuck

-----Original Message-----
From: Justin Ruthenbeck [mailto:[EMAIL PROTECTED]
Sent: Friday, November 21, 2003 2:54 PM
To: Tomcat Users List
Subject: RE: Server URL Before Request



[This is a general comment: I don't disagree with Chuck Goehring]

This is a common way to solve a problem such as the one Harris asked, but 
in general I don't think using init parameters are a very reasonable 
solution.  Here's why:

The web.xml defines the way in which the components of an application 
interact.  It defines what urls are mapped to which resources, how errors 
should be handled, and (unfortunately, IMHO) definitions of roles and 
resource authorization mappings.  These are all properties of your web 
application and say *nothing* about how the app is deployed.

Frequently, developers have situations where a webapp needs to be aware 
of the environment in which it is running.  In this case, it's the name 
and/or port that the app is running on.  In others, it's JNDI resource 
lookup information.  In still others, it's application configuration 
information that is long lived (how to configure management threads, for 
example).

The point is, this is all information that belongs to a particular 
*server*, not to the webapp.  It's different for every deployment because 
the machine for every deployment is different.  You could always 
configure this stuff in a <Context>, but that's Tomcat specific and is of 
no help when you need to run on different platforms -- now or in the 
future.

Instead, leave the deployment configuration parameters up to the person 
responsible for deploying -- and observe the boundaries even if it's a 
one-developer developed app.  Create a separate configuration mechanism 
(xml on the classpath, properties file, command line args, whatever is 
accessible on every platform) and use that to store this type of 
information.

Granted, small projects can use the crutches of built-in nicities, but 
for anyone developing a true J2EE app (not a Tomcat app), do yourself a 
favor and maintain strict separation between build-time configuration 
parameters and deploy-time ones.

justin

[Can you tell there's pent up frustration from having to deal with 
this?]  :)


At 01:51 PM 11/21/2003, you wrote:
>If you don't get a maintenance-free method from the group, you can 
>always do the following:
>
>In the servlet:
>   public void init() throws ServletException {
>     String lConnectTNSName = 
> getServletContext().getInitParameter("ConnectTNSName");
>     if(lConnectTNSName == null)
>       throw new RuntimeException("ConnectTNSName is null");
>...
>
>In the web applications web.xml I store the site-specific info:
><web-app>
>     <display-name>**** (display-name)</display-name>
>     <description>*** servlets and JSP pages.</description>
>     <context-param>
>       <param-name>ConnectTNSName</param-name>
>       <param-value>xxxx</param-value>
>     </context-param>
>...
>
>You could store any info you want this way and it only needs to be 
>re-entered when a change to your web.xml is required.
>
>Hope the group gives you a better answer, but this is handy for a 
>variety of things.
>
>Chuck
>
>
>
>-----Original Message-----
>From: Harris Reynolds [mailto:[EMAIL PROTECTED]
>Sent: Friday, November 21, 2003 12:29 PM
>To: '[EMAIL PROTECTED]'
>Subject: Server URL Before Request
>
>
>Is there a mgmt API that will allow me to get the URL that the server is
>running on from within the servlet init method (i.e. *before* the first
>request comes in)?  ...really all I would need is the port number (the
>hostname and context paths would be easy enough to get).
>thanks for any tips,
>~harris
>
>
>---------------------------------------------------------------------
>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]


______________________________________________
Justin Ruthenbeck
Software Engineer, NextEngine Inc.
justinr - AT - nextengine DOT com
Confidential. See:
http://www.nextengine.com/confidentiality.php
______________________________________________


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