2016-04-28 66 views
1

我正在使用EclipseMaven構建java web應用程序。該應用程序將在jbosswildfly)或tomcat上運行。我想配置我的Web應用程序的上下文路徑。配置Web應用程序的上下文路徑

默認情況下,eclipse將上下文路徑設置爲等於eclipse項目的名稱(參見project -> properties -> web project settings)。但是,無論在那裏顯示的上下文路徑如何,當我部署我的war文件時,war文件的名稱將用作上下文路徑,而不是eclipse中的設置。

我想知道如何配置在以下三種情況下的上下文路徑:

  • 當我在Eclipse中運行我的web項目,使用Eclipse的嵌入式服務器(如Tomcat或wildfly)。在這種情況下,它似乎正在接受項目名稱。
  • 當我用maven構建一個戰爭,並使用eclipse中的嵌入式服務器運行這個war文件。它似乎在採取戰爭文件的名稱。
  • 當我構建一個戰爭並將其部署到外部servlet容器(在eclipse之外)時。它似乎也將戰爭名稱作爲上下文路徑。

上下文路徑選擇platform/eclipse/servlet容器是否依賴?有沒有人記錄每個容器的標準行爲?有沒有辦法爲所有平臺和servlet容器配置/設置上下文路徑,而不管構建/部署戰爭的方式和位置,更重要的是,戰爭名稱與上下文路徑不一樣?

+0

至少有一些答案,你會發現在這裏:http://stackoverflow.com/a/664089/2365727 – michaldo

+0

@michaldo恐怕信息有點過時(2009年),但至少它不能在不使用EAR文件(而不是WAR文件)的情況下以servlet-container不可知的方式完成是很有幫助的,謝謝 – user1884155

回答

1

的唯一方法迄今設定的WAR的上下文根,使得它是獨立使用的應用程序服務器的是:使之成爲EAR的一部分,並且經由application.xml提供上下文根:

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6"> 
    <display-name>EAR_NAME</display-name> 
    <module id="Module_***********"> 
     <web> 
      <web-uri>YourWeb.war</web-uri> 
      <context-root>YourContextRoot</context-root> 
     </web> 
    </module> 
</application> 

即使在JAVA EE 6中,WAR的上下文根必須是jboss-web.xml,glassfish-web.xml或類似的特定於服務器的Web部署描述符的一部分。 Here是一個正式的例子。

我找不到類似的JAVA EE 7的例子,但我真的不認爲這已經改變。 JEE7主要是圍繞HTML5和JSON添加功能。

相關問題