2010-09-14 1 views
21

тема говорит все. То, что я хочу, чтобы отобразить каждый поддомен на веб-приложение, как:Как вы сопоставляете субдомен с webapp на Tomcat 6 (включая root webapp)?

http://root.domain.com:8080 -> http://domain.com:8080/ 
http://manager.domain.com:8080 -> http://domain.com:8080/manager 
http://abc.domain.com:8080 -> http://domain.com:8080/abc 
http://def.domain.com:8080 -> http://domain.com:8080/def 

на LOCALHOST машине это будет

http://root.localhost:8080 -> http://localhost:8080/ 
http://manager.localhost:8080 -> http://localhost:8080/manager 
http://abc.localhost:8080 -> http://localhost:8080/abc 
http://def.localhost:8080 -> http://localhost:8080/def 

В идеале я хотел бы использовать порт 80 вместо 8080, но это еще одна история. Я был бы рад получить его с портом 8080, так что путь в конце URL-адреса исчезнет.

Обратите внимание: стрелки не перенаправляются, а то, что я бы ввел, если бы оставил Tomcat как есть.

Я знаю страницу документов Tomcat http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html. Я читал его много раз, но не добился больших успехов. Я отредактировал etc/hosts, чтобы добавить 127.0.0.1 bbstats.localhost. Затем я добавил

<Host name="bbstats.localhost" appBase="webapps/bbstats" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 
</Host> 

для сервера Tomcat.xml в каталоге. Мой контекст webapp.xml:

<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true"> 
</Context> 

Restart Tomcat. Redploy через Ant. При вводе

http://bbstats.localhost:8080/

в браузере, я получаю пустой экран.

При использовании appBase = "webapps" вместо appBase = "webapps/bbstats", я попал в корневое приложение Tomcat. Последнее поведение является ожидаемым. Но как мне сделать bbstats.localhost: 8080 перейти в bbstats webapp без привязки/bbstats в URL?

+0

Привет, Карстен, ваш Tomcat стал чистым с вышеуказанной конфигурацией? Любые ошибки в журнале каталинии? – codeporn

+0

Чистота от того, что я вижу. Нет ошибок в каталинии. *. Log, только предупреждение »14.09.2010 17:25:53 org.apache.catalina.startup.HostConfig deployDescriptor WARNUNG: DocBase C: \ dev \ tomcat \ webapps \ bbstats внутри хоста appBase был указан и будет проигнорирован ", что, вероятно, связано с context.xml с указанием тех же значений в базе данных и в docBase. – Kawu

ответ

26

Можете ли вы попробовать вложить каждое веб-приложение в качестве корневого webapp в пределах <Host> в server.xml, указав path="". Я сам этого не делал.

<Host name="bbstats.localhost" appBase="webapps"> 
    <Context path="" docBase="/bbstats/"/> 
</Host> 

<Host name="tomcatstuff.localhost" appBase="webapps"> 
    <Context path="" docBase="/tomcatstuff/"/> 
</Host> 
+2

Теперь я использую «", и теперь он работает! :-) Примечание. Я также удалил путь и docBase из своего META-INF/context.xml. Цитирование http://old.nabble.com/appbase-and-docbase-td18616249.html: «... атрибуты path и docBase не разрешены для элемента в META-INF/context.xml« Я также нашел ваш техникой, подтвержденной http://oreilly.com/java/archive/tomcat-tips.html. Ура! – Kawu

+6

Использование docBase, как описано выше, создает «Document base/bbstats не существует или не является читаемым каталогом», проблема была решена путем удаления косой черты: ''. Отлично работает, спасибо! – Kof

+2

Привет, не могли бы вы посоветовать мне получить настройку поддомена, используя tomcat для Windows Server – kakabali