我正在尝试将 Apache Shindig 的 WAR 文件部署到 Ubuntu 10.04 上 apt 安装的 Tomcat 6 服务器。不幸的是,当它写出诸如<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>
答案1
你看过这个错误条目吗Shindig Jira 第 272 期?至少在去年 12 月,没有关于潜在解决方案的消息。显然,如果您的主机名不应该是 localhost,则某些硬编码路径会妨碍使用与 Jetty 不同的 servlet 容器。Jira 票证中描述了一个临时解决方案。它对您有用吗?
答案2
事实证明有一个单独的设置文件对于 Shindig,安装文档中没有提到这一点。您必须编辑文件WEB-INF/classes/containers/default/container.js
才能更改主机名。有很多地方使用${HOST_NAME}
或localhost
,我将其更改为my.external.hostname
。现在它起作用了!