Я пытаюсь развернуть 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 описано временное решение. Работает ли это для вас?