簡體   English   中英

在WAR-File中定義Servlet上下文

[英]Define Servlet Context in WAR-File

在給出WAR-File時,如何告訴Tomcat使用特定的上下文路徑?

示例:我有一個由maven build創建的war文件,結果文件的名稱相當長。 所以我不希望tomcat管理器應用程序使用war的文件名作為上下文。

在META-INF中提供context.xml不會產生所需的結果

我還在Contextpath屬性的文檔中找到了這個:

除非在server.xml中靜態定義Context,否則不得設置此字段的值,因為它將從用於.xml上下文文件或docBase的文件名中推斷出來。

所以它似乎不是告訴應用程序服務器應該是什么路徑的正確方法。

還有什么提示嗎?

Context Container的文檔中有兩個重點:

  • $CATALINA_BASE/conf/[enginename]/[hostname]/目錄中的單個文件(擴展名為“.xml”)中。 文件名 (減去.xml擴展名) 將用作上下文路徑 可以使用#來定義多級上下文路徑,例如foo #bar.xml,用於/ foo / bar的上下文路徑。 可以使用名為ROOT.xml的文件來定義默認Web應用程序。
  • 僅當$CATALINA_BASE/conf/[enginename]/[hostname]/的應用程序不存在上下文文件時,才在應用程序文件內的/META-INF/context.xml中的單個文件中。 如果Web應用程序打包為WAR,則/META-INF/context.xml將復制到$CATALINA_BASE/conf/[enginename]/[hostname]/命名以匹配應用程序的上下文路徑 一旦此文件存在,如果在主機的appBase中放置了帶有較新的/META-INF/context.xml的新WAR,則不會替換它。

因此,當您捆綁META-INF/context.xml ,文件將重命名為WAR的名稱,並且此名稱將成為上下文路徑,而不管Context元素中定義的任何path

我在這看到兩個選項:

  1. 將生成的war的名稱設置為較短的名稱(我建議使用<finalName> over <warName> ,不推薦使用AFAIK):

     <project> ... <build> <finalName>mycontext</finalName> ... </build> ... </project> 
  2. 或者使用maven-tomcat-plugin進行部署,並在插件配置中設置上下文路徑:

     <project> ... <build> ... <plugins> ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <path>/mycontext</path> </configuration> </plugin> ... </plugins> ... </build> ... </project> 

我找到了一個簡單的解決方案來保存war文件名並選擇context-path。

你只需要在Host的appBase之外部署你的戰爭,並在appBase目錄中創建一個鏈接。

防爆。

ln -sf ${CATALINA_HOME}/wars/myapp-0.0.8-SNAPSHOT.war ${CATALINA_HOME}/webapps/myapp.war

埃克爾

您可以設置META-INF/context.xml<Context>元素的path屬性。

或者,您可以配置maven以使用自定義名稱創建war工件:

<build>
    <plugins>
         <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.0</version>
            <configuration>
                <warName>yourCustomWarName</warName>
            </configuration>
        </plugin>
        ........
    </plugins>
</build>

在您的項目中有一個文件夾META-INF,在該文件夾中有一個context.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<Context  path="/myproject" />

暫無
暫無

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

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