Confirming that it is a bug. I filed an issue: https://issues.apache.org/bugzilla/show_bug.cgi?id=52225
You would avoid this bug if you reorder your lines: call "host.addAlias()" before you call "engine.addChild()". That is what Digester does when parsing server.xml: "engine.addChild()" method is called on the closing "</Host>" tag. Best regards, Konstantin Kolinko 2011/11/22 Chatree Srichart <chatree.srich...@gmail.com>: > Any comment? > > On Mon, Nov 21, 2011 at 1:52 PM, Chatree Srichart < > chatree.srich...@gmail.com> wrote: > >> Hi community. >> I am working on embedding a Tomcat server into my project. >> >> I have 2 domain name called localhost1 and localhost2. >> I created a Host instance with the localhost1 domain name. >> >> Host host = new StandardHost(); >> host.setAppBase(CATALINA_HOSTS_HOME); >> host.setName("localhost1"); >> host.setDeployOnStartup(false); >> host.setBackgroundProcessorDelay(5); >> host.setAutoDeploy(false); >> host.setRealm(engine.getRealm()); >> engine.addChild(host); >> >> Then I added the localhost2 as a alias. >> >> host.addAlias("localhost2"); >> >> If I entered localhost1 at a browser then it works fine but if I entered >> localhost2 at the browser then I got an error: >> >> Nov 21, 2011 1:29:26 PM org.apache.coyote.http11.AbstractHttp11Processor >> process >> SEVERE: Error processing request >> java.lang.ClassCastException: >> org.apache.tomcat.util.http.mapper.Mapper$Host cannot be cast to >> org.apache.catalina.Host >> at org.apache.catalina.connector.Request.getHost(Request.java:631) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:105) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) >> at >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) >> at >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) >> at >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >> at java.lang.Thread.run(Thread.java:619) >> >> >> I solved this problem by adding some codes into the trunk: >> >> Index: java/org/apache/tomcat/util/http/mapper/Mapper.java >> =================================================================== >> --- java/org/apache/tomcat/util/http/mapper/Mapper.java (revision >> 1204361) >> +++ java/org/apache/tomcat/util/http/mapper/Mapper.java (working copy) >> @@ -149,6 +149,10 @@ >> newHost.contextList = realHost.contextList; >> newHost.object = realHost; >> if (insertMap(hosts, newHosts, newHost)) { >> + Object object = newHost.object; >> + if (object instanceof Mapper.Host) { >> + newHost.object = ((Mapper.Host) object).object; >> + } >> hosts = newHosts; >> } >> } >> >> >> Do you think I am doing in the right track and this fixed should be >> committed into the trunk? If not, could you please give me a solution to >> solve the problem? >> >> Regards, >> Chatree Srichart >> > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org