【问题标题】:Configure the context path of a web app配置 Web 应用的上下文路径
【发布时间】:2016-08-23 09:22:02
【问题描述】:

我正在使用EclipseMaven 构建一个Java Web 应用程序。该应用程序将在jboss (wildfly) 或tomcat 上运行。我想配置我的 Web 应用程序的上下文路径。

默认情况下,eclipse 将上下文路径设置为等于 eclipse 项目的名称(见 project -> properties -> web project settings)。但是,不管那里显示的上下文路径如何,当我部署我的 war 文件时,war 文件的名称将用作上下文路径,而不是 eclipse 中的设置。

想知道以下三种情况下如何配置上下文路径:

  • 当我在 Eclipse 中运行我的 Web 项目时,使用 Eclipse 中的嵌入式服务器(例如 tomcat 或 wildfly)。在这种情况下,它似乎使用了项目名称。
  • 当我构建一个战争(使用 maven)并使用 Eclipse 中的嵌入式服务器运行这个战争文件时。它似乎取了战争文件的名称。
  • 当我构建战争并将其部署到外部 servlet 容器(在 eclipse 之外)时。它似乎也将战争名称作为上下文路径。

上下文路径选择平台/eclipse/servlet容器是否依赖?有没有人记录每个容器的标准行为?有没有办法为所有平台和 servlet 容器配置/设置上下文路径,无论战争是如何以及在何处构建/部署的,更重要的是,战争名称与上下文路径不同?

【问题讨论】:

  • 至少你会在这里找到一些答案:stackoverflow.com/a/664089/2365727
  • @michaldo 恐怕那里的信息有点过时(2009 年),但至少在不使用 EAR 文件(而不是 WAR 文件)的情况下无法以与 servlet-container 无关的方式完成的概念) 很有帮助,谢谢

标签: java eclipse maven web-applications contextpath


【解决方案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.xmlglassfish-web.xml 或类似的服务器特定 Web 部署描述符的一部分。 Here 是官方的例子。

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

【讨论】:

    猜你喜欢
    • 2016-11-15
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2019-12-20
    • 2011-05-12
    • 2012-03-15
    相关资源
    最近更新 更多