2010-06-02 117 views
1

我有两个部署在tomcat上的应用程序。对于每个应用程序,我都在$ CATALINA_HOME/conf/Catalina/localhost中定义了自己的上下文,其中定义了JDBC数据源。当我使用ant脚本取消部署其中一个应用程序时,此应用程序的上下文被删除,因此在下一次启动tomcat应用程序时无法部署,因为它没有定义JDBC连接。有没有解决这个问题的方法?取消部署时删除上下文

回答

1

我认为这是一个Tomcat错误。我提交了一个错误报告,但修复很复杂。

Tomcat的可以有3种方式部署应用程序,

  1. 目录,如的webapps/MYAPP。
  2. WAR,就像webapps/myapp.war。
  3. 上下文片段,这就是你正在使用的。

如果您使用#3但应用程序或战争在webapps中,Tomcat将与#1或#2混淆。当重新部署目录或战争时,它假设删除上下文片段。

我的解决方法是,

  1. 如果您使用目录,把它比应用平台(web应用)之外的某个地方。如果您使用WAR,请将它放在其他地方,并且不要爆炸它。
  2. 我们使用脚本部署我们的应用程序。在脚本中,片段在应用程序解除部署后每次都被复制。

这里是WAR部署样本片段,

<Context docBase="/anywhere/but/webapps/myapp.war" 
    swallowOutput="true" unpackWAR="false" /> 

请注意在解压缩模式不是每个应用程序运行。您无法以解包模式将任何资源读取为WAR中的文件。

+0

感谢您的回复。我们已经将数据库连接定义为资源,因此我们将尝试按照自己的方式编写脚本,并在每次取消部署后复制上下文片段,我希望它能帮助您 – Peter 2010-06-02 12:43:16

相关问题