簡體   English   中英

在不同路徑下訪問Tomcat根應用程序(在AWS / Elastic Beanstalk上)

[英]Access Tomcat root application under different path (on AWS/Elastic Beanstalk)

我們正在從遺留系統部署webapp(.war文件),我們可以完全控制我們的Tomcat實例到Amazon的Elastic Beanstalk實例。

在我們自己的系統上,我們將Web應用程序作為路徑訪問(例如,如果我們部署my-app.war,則為http://server-name/my-app ),但Elastic Beanstalk將我們的war文件重命名為ROOT.war,因此使Web應用程序在http://server-name下可用,這會破壞我們現有的應用程序。

根據AWS文檔,我們在WEB-INF/.ebextensions下添加了一個配置文件,該文件將以下自定義context.xml -file復制到/etc/tomcat7/Catalina/localhost/ROOT.xml

<?xml version='1.0' encoding='utf-8'?>
<Context displayName="localhost" docBase="" path="/my-app">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

我們嘗試過這個文件的不同版本,例如省略docBase,指定docBase="ROOT" ,使用aliases參數等,提供ROOT目錄等的完整路徑,但沒有一個使我們的WAR文件可以訪問/my-app路徑。

最后,我們還嘗試將此<Context /> -definition置於server.xml<Host />部分下,但無濟於事。 有什么建議么?

更新 :將以下內容添加到<Host/> -definition下的server.xml ,我可以在正確的路徑下訪問my-app ,但似乎EB上的Tomcat現在正在部署我的應用程序兩次:

<Context path="/my-app" docBase="ROOT/"></Context>

雖然我們現在可以在所需的路徑下訪問我們的應用程序,但Tomcat仍然會部署該應用程序兩次。 雖然這對我們來說是一個小麻煩,但我可以想象這在資源緊張的機器上是一個問題。 從好的方面來說,我們現在可以開始遷移我們的應用程序,以便在訪問API時不再使用資源路徑,從而實現更清晰,更短的API URL。

我知道已經晚了兩年。 但似乎禁用deployOnStartup將完成工作。

<Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="false" deployOnStartup="false">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM