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

时间:2016-04-28 14:25:17

标签: java eclipse maven web-applications contextpath

我正在使用EclipseMaven构建一个java Web应用程序。该应用将在jbosswildfly)或tomcat上投放。我想配置我的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容器配置/设置上下文路径,无论战争的构建/部署方式和位置如何,更重要的是,战争名称与上下文路径不同?

1 个答案:

答案 0 :(得分: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的context-root也必须是jboss-web.xmlglassfish-web.xml或类似服务器特定Web部署描述符的一部分。 Here是一个官方的例子。

我找不到JAVA EE 7的类似示例,但我真的不认为这已经改变了。 JEE7主要是围绕HTML5和JSON添加功能。