aspose file tools*
The moose likes Servlets and the fly likes How to obtain hostname during servlet init Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "How to obtain hostname during servlet init" Watch "How to obtain hostname during servlet init" New topic

How to obtain hostname during servlet init

Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 60048

I'd like to obtain the host name of the server my web app is running on during the init() method of one of my servlets (without resorting to init params or system properties which could speak with false tongue).
Any clues? There doesn't seem to be any way to get this info from the servlet config or servlet context.
You can get this from a request (using getServerName()) but the init() method is, of course, called long before any requests are made.
Seems like this is certainly something that should be able to be determined, but I can't seem to find a way.
Any clues would be most appreciated!

[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Dave Landers
Ranch Hand

Joined: Jul 24, 2002
Posts: 401
I think the problem is that a host doesn't necessarily know its name - especially if its behind a firewall or router or load balancer or edge caching technology or whatever.
It can know its own name, but that name may have nothing to do with how a client browser would address it.
For example, I can do a ping of and get something like this (some stuff deleted):
$ ping
PING ( ...
64 bytes from ( ...
64 bytes from ( ...
Now if you were coding the yahoo server, which host name would you want:,, or or any of the who knows how many others that are out there serving yahoo content?
And maybe you have one server hosting requests from several different names.
So maybe lazily initialize it off the first request. Hopefully that request is not going to be an admin testing with http://localhost/ So maybe its even better to query each request for "how did you get here" information.
Anyway, back to your question, if you still want the host name, how about
or .getCanonicalHostName() (JDK 1.4).
Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 60048

Hey Dave,
Thanks for the info. I decided to go with the lazy initialization scheme. Probably better for startup performance, anyways.
thanks again!
I agree. Here's the link:
subject: How to obtain hostname during servlet init
Similar Threads
Clarification abt init()
Reflection; Method.invoke() and obtaining the stack trace
web application - property file
Getting HttpSession from the init method
Servlet initParameter in EL