配置Web应用程序的上下文路径

问题描述:

我正在使用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

的唯一方法迄今设定的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添加功能。