2014-10-01 65 views
0

我有一个java webapp运行在IIS 8后面的Tomcat 7下(都配置为多主机)。如何在Tomcat中取消部署java webapp但保留IIS网站配置?

要更新Web应用程序,我通常取消部署现有应用程序并部署新的WAR(在其文件夹结构中爆炸),但这会导致IIS web.config文件被擦除,从而丢失所有(IIS)网站设置。

据我所知(但我是IIS新手),在IIS中,网站物理路径是webapp ROOT文件夹(即/path/to/tomcat/webapp/ROOT从名为ROOT.war的WAR中展开),并且在IIS中配置错误页时,创建文件ROOT/web.config

有什么办法可以避免丢失该配置文件?或者我应该总是重新部署新的战争而不首先部署Web应用程序?

如果necessay,这里有几个细节:

  • 我的web应用程序无关与web.config文件,它读取和IIS只写;
  • IIS和Tomcat与BonCode connector连接;
  • BonCode连接器为所有站点安装;
  • 我只运行一个Tomcat实例;
  • 我正在更改IIS配置以设置自定义错误页面和SSL要求。

回答

0

当你在tomcat中部署一场战争时,可以说你的战争叫做MyWar.war,文件夹MyWar被创建并且它取代了那里的任何东西。有时候,像你的情况一样,这是一种很好的做法,即从战争之外读取配置文件(不想覆盖的配置文件)。如果你可以访问你的代码并编译/重新部署,你将能够做到这一点。你需要做的是重新写代码从你读web.config的地方,并尝试读取它作为外部文件资源(FileInputStream)而不是ResourceAsStream(这可能是你如何阅读你的配置文件)。

这种方式每次部署时,重新部署并覆盖ROOT文件夹并不重要,因为配置将始终从外部读取。

如何做到这一点的例子是在这篇文章中,我也回答了。

Loading Properties from a JAR file (java 1.6)

希望它可以帮助

+0

一个小澄:在web.config中* *是读取和写入文件,我的web应用程序无关,用它做的IIS。最好的办法是把它移到其他地方,但我不知道这是否可能。 – watery 2014-10-01 16:28:23

+0

噢,好的。好吧,我想必须有一个地方可以编辑IIS配置并指定你的配置文件的位置。如果这不能完成(我不知道,因为我以前没有使用IIS),那么你将不得不复制你的文件,保存在其他地方,如果你必须重新部署tomcat,部署,然后用你所替换的文件替换保存。 – 2014-10-01 16:37:28