跳至主要内容

如何在 Eclipse WTP 内配置 Tomcat 的 Multiple Hosts

在开发Tomcat上的WebApp的时候,服务器上部署了几个webapp分别用Virtual Hosts映射到几个不同的domain,例如:
  1. www.mydomain.com
  2. wap.mydomain.com
  3. soapapi.mydomain.com
在服务器上操作的时候是通过Apache Httpd的config文件中设定Virutal Host,并采用JK2协议转发到Tomcat 5.5中。所以在Tomcat的server.xml中也要有对应的Host配置。
然而当我在Eclipse内通过WTP部署程序的时候,是没有办法创建多个Host的config的。通过Server视图中的右键菜单"Add or Remove Projects.."只能够在已有的默认Host内添加新的Context。于是我手动编辑这个server.xml文件,实现以下的双Host:
<Host appBase="webapps" autoDeploy="true" name="www.mydomain.com"
  unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
  <Context docBase="myweb" path="" reloadable="true"
    source="org.eclipse.jst.j2ee.server:myweb" crossContext="true"/>
</Host>
<Host appBase="webapps" autoDeploy="true" name="soapapi.mydomain.com"
  unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
  <Context docBase="myapi" path="" reloadable="true"
    source="org.eclipse.jst.j2ee.server:myapi"/>
</Host>

这时候遇到了一个问题,简单说来是这样的——虽然我手动编写的配置是正确的,可以在Eclipse内启动tomcat服务器开始debug,但是启动后就会见到fatal error说在tmp0/webapps目录中找不到文件夹myapi。
熟悉WTP的童鞋都知道tmp0是Eclipse内部集成的Tomcat目录内的一个重要文件夹,起到的作用相当于catalina.home的功能。这个目录内实际上有webapp和wtpwebapp两个目录,前者是空的,后者才是Eclipse悄悄的执行deploy的目的地。
经过若干次无效的设置和修改,在几乎要放弃尝试之前,想到了一个土法——先通过Server视图中的菜单添加project,然后运行一次,接着再用自己的config取代WTP自动生成的,这样就成了。估计这是一个WTP集成Tomcat的bug。特此记录一下。我的Eclipse版本是3.4.1。

评论