Назад | Перейти на главную страницу

Как мне настроить tomcat6 с именем хоста?

Я пытаюсь развернуть WAR-файл Apache Shindig на установленном apt сервере Tomcat 6 в Ubuntu 10.04. К сожалению, когда он записывает такие вещи, как <script> теги, все URL-адреса http://localhost/..., хотя я считать Я сказал Tomcat, что у этого сервера есть внешнее имя. Без комментариев содержание моего server.xml файл здесь. По сути, это конфигурация по умолчанию, за исключением того, что я изменил все экземпляры localhost к my.external.hostname (конечно, мой актуальный имя хоста в фактическом файле конфигурации).

Как мне заставить Tomcat6 / Shindig понять, что он живет в my.external.hostname так что это не относится к http://localhost/...?

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               URIEncoding="UTF-8"
               redirectPort="8443" />
    <!-- *** THIS IS WHERE IT GETS INTERESTING: hostname set here: -->
    <Engine name="Catalina" defaultHost="my.external.hostname">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <!-- *** and here: -->
      <Host name="my.external.hostname"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

Оказывается, есть отдельный файл настроек для Shindig, не упомянутого в документации по установке. Вы должны отредактировать WEB-INF/classes/containers/default/container.js файл, чтобы изменить имя хоста. Есть множество мест, где ${HOST_NAME} или localhost, который я изменил на my.external.hostname. Теперь это работает!

Вы видели эту запись об ошибке Шиндиг Джира, выпуск 272? По крайней мере, в декабре прошлого года не было новостей о возможном разрешении конфликта. Очевидно, что некоторые жестко запрограммированные пути мешают использовать контейнер сервлетов, отличный от Jetty, если ваше имя хоста не должно быть localhost. В заявке Jira описано временное решение. Работает ли это для вас?