tomcat - 在 Tomcat 中从不同路径提供相同的 servlet 实例

标签 tomcat

如何指示 Tomcat 从多个路径提供同一个 servlet 实例?

例如,给定 example.com/old-addressexample.com/new-address,我想从这两个地址保存同一个 servlet 实例。我不想两次部署 servlet。在没有任何 Apache HTTP 服务器/反向代理 URL 重写的情况下,这是否可以通过独立的 Tomcat 实现?

最佳答案

回答这个问题有很多不同的层次:

  • 实际的 servlet 实例(在“类的实例”的意义上)与您无关:应用程序服务器本身决定它想要实例化一个对象的多少个实例。 (通常只有 1 个 - 每个网络应用程序)
  • 如果您在服务器的根路径 ("/") 上部署 Web 应用程序,您将能够映射 URL /old-address/new-address 到同一个 servlet(同样,不要担心 实例。我假设你想部署一个 old-address.war 和一个 new-address.war - 在在这种情况下,您将运行完全不同的 Web 应用程序,这些应用程序将通过设计彼此分离。
  • 如果您要从一个应用程序名称迁移到另一个应用程序名称,配置适当的重定向(永久重定向,就此而言)实际上是一个优势,这样每个人迟早都会更新他们的书签和链接。

跟进评论:

Servlet 不得在其实例中保留任何状态。请求是并发服务的,状态通过请求和响应对象进入。如果您担心对某些后端资源的并发访问(正如您在对问题的评论中所述):您已经有一个错误的实现并且很幸运没有被它咬伤。即使是单个 servlet 实例也可以处理数千个并发请求(如果容器接受那么多并发连接)。

servlet 对象 的内存消耗也无关紧要(请参阅我对此的评论)

你担心错了。

关于tomcat - 在 Tomcat 中从不同路径提供相同的 servlet 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995900/

相关文章:

java - Tomcat 不能在本地主机上工作

java - 监控服务器状态的好方法是什么?

java - 运行 Tomcat 服务器 Intellij 跳过测试类

java - tomcat 的 accept() 方法会创建什么样的套接字

java - 模拟类,Java

java - 如何从 Java EE Web 应用程序运行外部应用程序?

tomcat - 有没有办法直接用war文件参数启动tomcat

java - 不使用 GIT 将 WAR 文件部署到 Openshift?

java - 如何在 Alfresco Activiti 中配置电子邮件服务器?

java - 如何从 DSpace-CRIS 中的不同元数据中收集有关 CHRIS 实体的数据?