我正在使用Eclipse
和Maven
构建一个java Web应用程序。该应用将在jboss
(wildfly
)或tomcat
上投放。我想配置我的Web应用程序的上下文路径。
默认情况下,eclipse将上下文路径设置为等于eclipse项目的名称(见project -> properties -> web project settings
)。但是,无论在那里显示的上下文路径如何,当我部署war文件时,war文件的名称将用作上下文路径,而不是eclipse中的设置。
我想知道如何在以下三种情况下配置上下文路径:
上下文路径选择platform / eclipse / servlet容器是否依赖?有人记录了每个容器的标准行为吗?有没有办法为所有平台和servlet容器配置/设置上下文路径,无论战争的构建/部署方式和位置如何,更重要的是,战争名称与上下文路径不同?
答案 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.xml
,glassfish-web.xml
或类似服务器特定Web部署描述符的一部分。 Here是一个官方的例子。
我找不到JAVA EE 7的类似示例,但我真的不认为这已经改变了。 JEE7主要是围绕HTML5和JSON添加功能。