You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Tony Vinayak <tv...@covalent.net> on 2001/09/13 17:20:54 UTC

Getting Tomcat's Port# in Servlet (using mod_jk)

Greetings,

Am using Tomcat 3.2 with mod_jk and Apache 1.3.20

In my servlet, doing request.getServerPort() tells me the port on which
Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
connector (ajp13) is listening (e.g. 8007) ??

regards,
Tony


RE: Getting Tomcat's Port# in Servlet (using mod_jk)

Posted by Jan Labanowski <jk...@osc.edu>.
If this is the requirement, and you cannot do what I suggest (i.e., 
make symbolic links, and only have copies of web.xml files),
then you, in my humble opinion, do not have a chance... Jump from the bridge
or write your own connectors which will be adding fields to your request
header...

Jan

On Thu, 13 Sep 2001, Tony Vinayak wrote:

> Jan,
> 
> All my workers are running on the same box on different ports. They are all
> defined in the $TOMCAT_HOME/conf/workers.properties file, and they all share
> the webapps deployed under $TOMCAT_HOME/webapps. So there is only ONE copy
> of each deployed webapp with its own web.xml.
> 
> - Tony
> 
> -----Original Message-----
> From: Jan Labanowski [mailto:jkl@osc.edu]
> Sent: Thursday, September 13, 2001 2:07 PM
> To: Tony Vinayak
> Cc: Jan Labanowski; tomcat-user@jakarta.apache.org
> Subject: RE: Getting Tomcat's Port# in Servlet (using mod_jk)
> 
> 
> I am not sure how your workers are done, but usually each worker gets its
> own
> copies of context files, or its own copy of links to the context files,
> i.e.,
> each context in each worker has its own copy of the web.xml. But I do not
> know what you are doing, so I cannot really help...
> 
> Jan
> 
> On Thu, 13 Sep 2001, Tony Vinayak wrote:
> 
> > Hmmm...I am actually letting the "loadbalancer" worker handle the actual
> > allocation of the ajp13 worker (and hence the port#), so I can't hard-code
> > the port# in my web.xml.
> >
> > What I really want to accomplish is to be able to tell within my servlet
> > *which* Tomcat worker is handling it. Port# was the first thought as a
> > unique identifier; anything else I could use ??
> >
> > regards,
> > Tony
> >
> > -----Original Message-----
> > From: Jan Labanowski [mailto:jkl@osc.edu]
> > Sent: Thursday, September 13, 2001 12:17 PM
> > To: tomcat-user@jakarta.apache.org; Jan Labanowski;
> > tvinayak@covalent.net
> > Subject: Re: Getting Tomcat's Port# in Servlet (using mod_jk)
> >
> >
> > >From what I know, you cannot, but you can put the ports in the
> > context parameters in web.xml and get these parameters from within
> servlets
> > and JSP.
> >   <context-param>
> >     <param-name>connectorPort</param-name>
> >     <param-value>8007</param-value>
> >   </context-param>
> >
> > which you can retrieve from a servlet by calling:
> >
> >   getServletContext().getInitParameter("connectorPort");
> > or
> >   Connector port is <%= application.getInitParameter("connectorPort") %>
> > in JSP
> >
> > The connectors are not part of the spec, and you can only get this
> > information by modifying the Tomcat itself and adding methods which could
> > retrieve this information. Of course it would be totally unstandard and
> > unportable (but in a sense, connectors are not standard anyhow), and
> > I am not even sure how you could get to this information easily, since the
> > your classloader does not know about Tomcat classes in the
> > org.apache.tomcat.service.whatever... You could probably make them write
> > something to some static bean where you can get it, but again... This is
> > for gurus to tell us, since I would be rediscovering the wheel going
> through
> > the Tomcat source...
> >
> > Jan
> >
> > On Thu, 13 Sep 2001, Tony Vinayak wrote:
> >
> > > Greetings,
> > >
> > > Am using Tomcat 3.2 with mod_jk and Apache 1.3.20
> > >
> > > In my servlet, doing request.getServerPort() tells me the port on which
> > > Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
> > > connector (ajp13) is listening (e.g. 8007) ??
> > >
> > > regards,
> > > Tony
> > >
> >
> > Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
> > Ohio Supercomputer Center    |    Internet: jkl@osc.edu
> > 1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
> > Columbus, OH 43212-1163      |    http://www.osc.edu/
> >
> >
> 
> Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
> Ohio Supercomputer Center    |    Internet: jkl@osc.edu
> 1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
> Columbus, OH 43212-1163      |    http://www.osc.edu/
> 
> 

Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
Ohio Supercomputer Center    |    Internet: jkl@osc.edu 
1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
Columbus, OH 43212-1163      |    http://www.osc.edu/


RE: Getting Tomcat's Port# in Servlet (using mod_jk)

Posted by Tony Vinayak <tv...@covalent.net>.
Jan,

All my workers are running on the same box on different ports. They are all
defined in the $TOMCAT_HOME/conf/workers.properties file, and they all share
the webapps deployed under $TOMCAT_HOME/webapps. So there is only ONE copy
of each deployed webapp with its own web.xml.

- Tony

-----Original Message-----
From: Jan Labanowski [mailto:jkl@osc.edu]
Sent: Thursday, September 13, 2001 2:07 PM
To: Tony Vinayak
Cc: Jan Labanowski; tomcat-user@jakarta.apache.org
Subject: RE: Getting Tomcat's Port# in Servlet (using mod_jk)


I am not sure how your workers are done, but usually each worker gets its
own
copies of context files, or its own copy of links to the context files,
i.e.,
each context in each worker has its own copy of the web.xml. But I do not
know what you are doing, so I cannot really help...

Jan

On Thu, 13 Sep 2001, Tony Vinayak wrote:

> Hmmm...I am actually letting the "loadbalancer" worker handle the actual
> allocation of the ajp13 worker (and hence the port#), so I can't hard-code
> the port# in my web.xml.
>
> What I really want to accomplish is to be able to tell within my servlet
> *which* Tomcat worker is handling it. Port# was the first thought as a
> unique identifier; anything else I could use ??
>
> regards,
> Tony
>
> -----Original Message-----
> From: Jan Labanowski [mailto:jkl@osc.edu]
> Sent: Thursday, September 13, 2001 12:17 PM
> To: tomcat-user@jakarta.apache.org; Jan Labanowski;
> tvinayak@covalent.net
> Subject: Re: Getting Tomcat's Port# in Servlet (using mod_jk)
>
>
> >From what I know, you cannot, but you can put the ports in the
> context parameters in web.xml and get these parameters from within
servlets
> and JSP.
>   <context-param>
>     <param-name>connectorPort</param-name>
>     <param-value>8007</param-value>
>   </context-param>
>
> which you can retrieve from a servlet by calling:
>
>   getServletContext().getInitParameter("connectorPort");
> or
>   Connector port is <%= application.getInitParameter("connectorPort") %>
> in JSP
>
> The connectors are not part of the spec, and you can only get this
> information by modifying the Tomcat itself and adding methods which could
> retrieve this information. Of course it would be totally unstandard and
> unportable (but in a sense, connectors are not standard anyhow), and
> I am not even sure how you could get to this information easily, since the
> your classloader does not know about Tomcat classes in the
> org.apache.tomcat.service.whatever... You could probably make them write
> something to some static bean where you can get it, but again... This is
> for gurus to tell us, since I would be rediscovering the wheel going
through
> the Tomcat source...
>
> Jan
>
> On Thu, 13 Sep 2001, Tony Vinayak wrote:
>
> > Greetings,
> >
> > Am using Tomcat 3.2 with mod_jk and Apache 1.3.20
> >
> > In my servlet, doing request.getServerPort() tells me the port on which
> > Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
> > connector (ajp13) is listening (e.g. 8007) ??
> >
> > regards,
> > Tony
> >
>
> Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
> Ohio Supercomputer Center    |    Internet: jkl@osc.edu
> 1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
> Columbus, OH 43212-1163      |    http://www.osc.edu/
>
>

Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
Ohio Supercomputer Center    |    Internet: jkl@osc.edu
1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
Columbus, OH 43212-1163      |    http://www.osc.edu/



RE: Getting Tomcat's Port# in Servlet (using mod_jk)

Posted by Jan Labanowski <jk...@osc.edu>.
I am not sure how your workers are done, but usually each worker gets its own
copies of context files, or its own copy of links to the context files, i.e., 
each context in each worker has its own copy of the web.xml. But I do not
know what you are doing, so I cannot really help...

Jan

On Thu, 13 Sep 2001, Tony Vinayak wrote:

> Hmmm...I am actually letting the "loadbalancer" worker handle the actual
> allocation of the ajp13 worker (and hence the port#), so I can't hard-code
> the port# in my web.xml.
> 
> What I really want to accomplish is to be able to tell within my servlet
> *which* Tomcat worker is handling it. Port# was the first thought as a
> unique identifier; anything else I could use ??
> 
> regards,
> Tony
> 
> -----Original Message-----
> From: Jan Labanowski [mailto:jkl@osc.edu]
> Sent: Thursday, September 13, 2001 12:17 PM
> To: tomcat-user@jakarta.apache.org; Jan Labanowski;
> tvinayak@covalent.net
> Subject: Re: Getting Tomcat's Port# in Servlet (using mod_jk)
> 
> 
> >From what I know, you cannot, but you can put the ports in the
> context parameters in web.xml and get these parameters from within servlets
> and JSP.
>   <context-param>
>     <param-name>connectorPort</param-name>
>     <param-value>8007</param-value>
>   </context-param>
> 
> which you can retrieve from a servlet by calling:
> 
>   getServletContext().getInitParameter("connectorPort");
> or
>   Connector port is <%= application.getInitParameter("connectorPort") %>
> in JSP
> 
> The connectors are not part of the spec, and you can only get this
> information by modifying the Tomcat itself and adding methods which could
> retrieve this information. Of course it would be totally unstandard and
> unportable (but in a sense, connectors are not standard anyhow), and
> I am not even sure how you could get to this information easily, since the
> your classloader does not know about Tomcat classes in the
> org.apache.tomcat.service.whatever... You could probably make them write
> something to some static bean where you can get it, but again... This is
> for gurus to tell us, since I would be rediscovering the wheel going through
> the Tomcat source...
> 
> Jan
> 
> On Thu, 13 Sep 2001, Tony Vinayak wrote:
> 
> > Greetings,
> >
> > Am using Tomcat 3.2 with mod_jk and Apache 1.3.20
> >
> > In my servlet, doing request.getServerPort() tells me the port on which
> > Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
> > connector (ajp13) is listening (e.g. 8007) ??
> >
> > regards,
> > Tony
> >
> 
> Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
> Ohio Supercomputer Center    |    Internet: jkl@osc.edu
> 1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
> Columbus, OH 43212-1163      |    http://www.osc.edu/
> 
> 

Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
Ohio Supercomputer Center    |    Internet: jkl@osc.edu 
1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
Columbus, OH 43212-1163      |    http://www.osc.edu/


RE: Getting Tomcat's Port# in Servlet (using mod_jk)

Posted by Tony Vinayak <tv...@covalent.net>.
Hmmm...I am actually letting the "loadbalancer" worker handle the actual
allocation of the ajp13 worker (and hence the port#), so I can't hard-code
the port# in my web.xml.

What I really want to accomplish is to be able to tell within my servlet
*which* Tomcat worker is handling it. Port# was the first thought as a
unique identifier; anything else I could use ??

regards,
Tony

-----Original Message-----
From: Jan Labanowski [mailto:jkl@osc.edu]
Sent: Thursday, September 13, 2001 12:17 PM
To: tomcat-user@jakarta.apache.org; Jan Labanowski;
tvinayak@covalent.net
Subject: Re: Getting Tomcat's Port# in Servlet (using mod_jk)


>>From what I know, you cannot, but you can put the ports in the
context parameters in web.xml and get these parameters from within servlets
and JSP.
  <context-param>
    <param-name>connectorPort</param-name>
    <param-value>8007</param-value>
  </context-param>

which you can retrieve from a servlet by calling:

  getServletContext().getInitParameter("connectorPort");
or
  Connector port is <%= application.getInitParameter("connectorPort") %>
in JSP

The connectors are not part of the spec, and you can only get this
information by modifying the Tomcat itself and adding methods which could
retrieve this information. Of course it would be totally unstandard and
unportable (but in a sense, connectors are not standard anyhow), and
I am not even sure how you could get to this information easily, since the
your classloader does not know about Tomcat classes in the
org.apache.tomcat.service.whatever... You could probably make them write
something to some static bean where you can get it, but again... This is
for gurus to tell us, since I would be rediscovering the wheel going through
the Tomcat source...

Jan

On Thu, 13 Sep 2001, Tony Vinayak wrote:

> Greetings,
>
> Am using Tomcat 3.2 with mod_jk and Apache 1.3.20
>
> In my servlet, doing request.getServerPort() tells me the port on which
> Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
> connector (ajp13) is listening (e.g. 8007) ??
>
> regards,
> Tony
>

Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
Ohio Supercomputer Center    |    Internet: jkl@osc.edu
1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
Columbus, OH 43212-1163      |    http://www.osc.edu/



Re: Getting Tomcat's Port# in Servlet (using mod_jk)

Posted by Jan Labanowski <jk...@osc.edu>.
>From what I know, you cannot, but you can put the ports in the
context parameters in web.xml and get these parameters from within servlets
and JSP.
  <context-param>
    <param-name>connectorPort</param-name>
    <param-value>8007</param-value>
  </context-param>

which you can retrieve from a servlet by calling:

  getServletContext().getInitParameter("connectorPort");
or
  Connector port is <%= application.getInitParameter("connectorPort") %>
in JSP

The connectors are not part of the spec, and you can only get this
information by modifying the Tomcat itself and adding methods which could
retrieve this information. Of course it would be totally unstandard and
unportable (but in a sense, connectors are not standard anyhow), and
I am not even sure how you could get to this information easily, since the
your classloader does not know about Tomcat classes in the
org.apache.tomcat.service.whatever... You could probably make them write
something to some static bean where you can get it, but again... This is
for gurus to tell us, since I would be rediscovering the wheel going through
the Tomcat source...

Jan

On Thu, 13 Sep 2001, Tony Vinayak wrote:

> Greetings,
> 
> Am using Tomcat 3.2 with mod_jk and Apache 1.3.20
> 
> In my servlet, doing request.getServerPort() tells me the port on which
> Apache is listening (e.g. 80). How can I get to the Port on which Tomcat
> connector (ajp13) is listening (e.g. 8007) ??
> 
> regards,
> Tony
> 

Jan K. Labanowski            |    phone: 614-292-9279,  FAX: 614-292-7168
Ohio Supercomputer Center    |    Internet: jkl@osc.edu 
1224 Kinnear Rd,             |    http://www.ccl.net/chemistry.html
Columbus, OH 43212-1163      |    http://www.osc.edu/