对于 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/