java - 单独 WAR 中的 Servlet - 部分共享其上下文根

标签 java servlets jakarta-ee jboss

对于 Web 服务项目,我需要在我的 Web 服务器上安装 Java EE Web 的两个 API 版本

  • example.com/myservice/v1
  • example.com/myservice/v2

分离不同版本的最安全方法似乎是将它们部署在不同的 WAR 文件中,一个用于 v1,一个用于 v2

我使用 jboss-web.xml 中的这些条目创建并部署了两个 JBoss 6 Java EE 6 Web Profile 应用程序:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
  <context-root>/test/v1</context-root>
</jboss-web>

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
  <context-root>/test/v2</context-root>
</jboss-web>

两个 war 文件都已部署并运行,没有错误。 JBoss 并没有提示他们使用相同的根上下文部分 /test

这是 servlet 容器的标准行为(指定)还是只是 JBoss 功能且不保证可移植?

最佳答案

例如,Glassfish 的 Oracle 文档说 A context root must start with a forward slash (/); and end with a string - 上下文根内没有斜线限制。

另一个例子是 JBoss 文档,其中有 an example of two web applications with nested context roots (paragraph 1) .

Tomcat 还支持嵌套上下文路径 - 请参阅 Apache Context Configuration doc 的命名部分.

规范中也没有要求上下文根内部不能有斜杠。我认为这意味着,与任何其他功能一样,您可以假设它可以在您的应用程序服务器上运行,但它的配置方式可能有所不同,当然,您必须在移动到另一个容器之前测试您的应用程序。

关于java - 单独 WAR 中的 Servlet - 部分共享其上下文根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049157/

相关文章:

java - 在 catch block 中返回的代码是否干净?

java - servlet 的根 URL

java - java ee 6 @Resource注解的使用方法

java - spring hibernate .. H2 数据库 - 找不到模式

java - 电池状态类似于使用 Swing 的实现

java - 无重复的 k 排序数组的迭代器实现 - 面试问题

java - 如何在动态生成 Id 值时检索复选框的值

java - Spring MVC Filter解决方案

java - 在 Java 中执行 javascript 代码的更快方法(sdk1.4)

JAVA:广播UDP数据包时检测 self