Hi André,

Thanks for your suggestion. I've changed (1) to

tomcat.getEngine().setDefaultHost(tomcat.getHost().getName());

and removed (2). It also works this way and the code seems more adequate.
Thanks again!

2012/7/18 André Warnier <a...@ice-sa.com>

> Alexander Shutyaev wrote:
>
>> Hi Christopher,
>>
>> I've found a solution to my problem although I believe it's more accurate
>> to say I guessed it :) Maybe you'll be able to explain it to me. Here is
>> the complete code:
>>
>> Tomcat tomcat = new Tomcat();
>> tomcat.setBaseDir(baseDir);
>> tomcat.getConnector().setPort(**8080);
>> tomcat.getServer().**setParentClassLoader(getClass(**).getClassLoader());
>> tomcat.getEngine(); // (1)
>> tomcat.init();
>> tomcat.getHost().addAlias("**127.0.0.1"); // (2)
>> tomcat.start();
>> tomcat.addWebapp("", path);
>>
>> (1) - this seems like it should be called from somewhere within Tomcat
>> class during initialization, but somehow it isn't called, and without this
>> line I get a NullPointerException
>>
>> (2) - this is my solution to the problem I've described before; without
>> this line my app is only served on http://localhost:8080 but if I include
>> this line my app is available on http://localhost:8080,
>> http://127.0.0.1:8080 and all other assigned addresses like
>> http://192.168.1.1:8080 etc
>>
>>  Hi.
> I have absolutely no idea how this really works, but I note that in
> server.xml, the "default host" is an attribute of the <Engine> tag :
> <Engine name="Catalina" defaultHost="localhost">
> So maybe somehow by doing (1) above, the consequences are a bit deeper
> than just avoiding the NullPointerException.
>
> I don't find in the on-line documentation a description of how Tomcat
> exactly matches HTTP requests to <Host> names, but the general logic in
> webservers is something like :
> - consider the "Host:" header of the request
> - try to match it to one of the defined hostnames in the server
> configuration
> - if it matches, then handle this request as per the configuration of that
> (virtual) host
> - if it doesn't match, then handle the request with the configuration of
> whatever <Host> is defined as the default Host.
>
> In Apache httpd, if you have a single Host defined, it automatically
> becomes the default Host.  In Tomcat however, even if you have a single
> Host defined, it is not automatically the default Host.  You must explcitly
> name this default Host in the "defaultHost" attribute of the <Engine> tag.
> So maybe your (1) above initialises some internal structure which fills in
> the "default host" value.
>
> Anyway, if the Engine's defaultHost is set correctly (to "localhost"
> e.g.), then you should not normally need to add the "127.0.0.1" Alias (as
> all requests should default to that defaultHost anyway).
> So to me, there is still something somewhat unsatisfactory in having to do
> (2) above.
>
> (But I am definitely not saying this as a Java or Tomcat/Java expert)
>
>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@tomcat.**apache.org<users-unsubscr...@tomcat.apache.org>
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to