如何配置tomcat6的主机名?

如何配置tomcat6的主机名?

我正在尝试将 Apache Shindig 的 WAR 文件部署到 Ubuntu 10.04 上 apt 安装的 Tomcat 6 服务器。不幸的是,当它写出诸如<script>标签之类的内容时,所有的 URL 都是http://localhost/...,尽管我思考我已经告诉 Tomcat,此服务器有一个外部名称。我的文件的非注释内容server.xml在这里。这基本上是默认配置,除了我已将所有实例更改为localhostmy.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。现在它起作用了!

相关内容