2017-05-30 41 views
0

我在Azure中創建了一個Web應用程序,並在D:\ home \ site \ wwwroot \ webapps文件夾中上傳了一個war文件。我使用標準定價層的應用服務計劃。 我已經做了設置,以激活Java和Tomcat在應用程序設置菜單:Azure中的Tomcat WebApp未啓動

  • Java版本:Java的8
  • 的Java小版本:最新
  • Web容器:Tomcat的最新

如果選項「始終開啓」未激活,則我的Tomcat不會啓動。沒有Java進程啓動,我的戰爭文件沒有解壓縮。我做了幾次停止/開始的應用程序,沒有任何反應。 一旦我激活了「Always On」,Tomcat就會啓動並部署應用程序。 服務計劃中的「始終開啓」功能不提供免費定價層。

有人知道爲什麼Azure的行爲如此嗎?

+2

是否在您首次請求服務後開始/解壓縮,還是「從不」開始? – CtrlDot

+0

它永遠不會啓動。當我停用「Always On」選項時,java進程被終止。 – jmacke

+0

聽起來像是Azure支持電話,或MSDN論壇。這似乎不像正常行爲恕我直言 – CtrlDot

回答

0

我試圖通過FTP來重現行爲,下面是我在Tomcat 8.5.6上觀察到的情況,如下所示:@GopiKolla。

  1. 如果禁用Always on選項,上傳的.war文件將不會自動解壓縮。但是,當我試圖訪問.war文件的webapp的url時,它被解壓到一個與十多秒鐘後名字相同的目錄中。
  2. 如果啓用此選項,所有war文件將立即自動解包&。

我必須檢查所有配置&環境變量,其中包括屬性autodeployunpackWARs & deployOnStartup等,這些不會與選項開關改變。我從Tomcat的官方相關文件(1,2, 3)搜索了這個案例的解釋,沒有什麼有用的信息可以解釋它。根據我的經驗,我只是猜測&,我認爲Azure通過IIS限制運行時的生命週期,以確定是否通過選項Always on激活web.config中定義的httpPlatformHandler進程。

希望它有幫助。

0

感謝您的反饋。 昨天我再次進行了測試,我想我已經瞭解了Azure WebApp的工作原理。 在webapps文件夾中上傳war文件時,即使tomcat配置爲解包並加載war,java進程也不會啓動。

只有當您點擊您網站的網址時,它纔會啓動java進程。

如果您不點擊,則不會分叉java進程。第一次點擊將分叉Tomcat的java進程。

我想這是IIS工作人員的正常行爲。

所以,現在,當我部署一個Java應用程序時,我總是對URL進行觸摸以確保webapp真正啓動。