2011-02-09 58 views
0

我們目前有一個運行2個webapps的Tomcat服務器;一個用於美國站點,另一個專門用於歐盟的webapp。我們已經沿着這些行在功能上分區了應用程序& db;目前正在運行的美國站點的一個邏輯實例,另一個用於歐盟站點Tomcat +管理屬性文件

目前,我們的發佈過程如下: - 我們本質上部署2個相同的戰爭對Tomcat的,除非重新起tomcat之前,我們更改屬性文件,以確定美國或歐盟的webapp

會有什麼新喜歡做的是自動化整個過程。我想部署我的2戰爭,而不修改屬性文件,但也沒有真正改變我的構建腳本非常多。有關如何刪除此手動步驟的任何建議?

回答

0

如果您正在使用Ant構建腳本,則可以使用copy命令的filterset功能來設置屬性。 您需要:

  • 模板屬性文件
  • 兩個屬性文件(每個Web應用程序)

你的模板文件:

... 
locale = @[email protected] 
other.stuff.int = 123 
other.stuff.string = test string 
... 

(注意@[email protected]佔位符)

您的美國財產檔案:

... 
deploy.locale = US 
... 

您歐盟屬性文件:

... 
deploy.locale = EU 
.... 

在Ant生成文件,現在你可以:

  1. 擦拭TMP目錄
  2. 工程編譯成TMP目錄
  3. 複製模板屬性文件合併在美國屬性
  4. 收官TMP文件夾放到war_for_us.war
  5. 複製war_for_us.war在你的tomcat的webapps目錄
  6. 複製的模板屬性文件在歐盟的性質合併
  7. 收官TMP文件夾放到war_for_eu.war
  8. 複製war_for_eu.war在你的tomcat的webapps目錄

您也可以停止&啓動Tomcat在構建腳本。 這裏是你如何複製的模板:

<copy todir="${tmp.dir}" overwrite="true"> 
    <fileset dir="templates"> 
     <include name="template.properties" /> 
    </fileset> 
    <filterset filtersfile="us.properties" /> 
</copy> 
... 
<copy todir="${tmp.dir}" overwrite="true"> 
    <fileset dir="templates"> 
     <include name="template.properties" /> 
    </fileset> 
    <filterset filtersfile="eu.properties" /> 
</copy> 

其他螞蟻部署技巧,參閱this post

0

你也可以通過編程來完成。首先你必須實現aorg.apache.catalina.LifeCycleListener。它包含單一方法

/** 
* Acknowledge the occurrence of the specified event. 
* 
* @param event LifecycleEvent that has occurred 
*/ 
public void lifecycleEvent(LifecycleEvent event); 

對於事件參數,您必須監聽上下文部署事件。一些例子可以看http://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html

你會把聽者到Tomcat的server.xml文件作爲

<Listener className="your implementation class name"/> 

我希望它能幫助