如何指示Tomcat从多个路径提供相同的servlet实例?
例如,给定example.com/old-address
和example.com/new-address
,我想从这两个地址保存相同的servlet实例。我不想两次部署servlet。这是可能的Tomcat独立,没有任何Apache HTTP服务器/反向代理URL重写?
答案 0 :(得分:1)
回答这个问题有很多不同的层次:
/old-address
和/new-address
映射到同一个servlet(同样,不要'担心实例。我假设您要部署old-address.war和new-address.war - 在这种情况下,您将运行完全不同的Web应用程序,将通过设计彼此分开。跟进评论:
servlet不得在其实例中保留任何状态。请求同时提供,状态通过请求和响应对象进入。如果您担心并发访问某些后端资源(正如您在问题评论中所述):您已经有一个错误的实现,并且幸运的是没有被它咬过。即使是单个servlet实例也可以处理数千个并发请求(如果容器接受那么多并发连接)。
servlet 对象的内存消耗也无关紧要(参见我对此的评论)
你担心错误的事情。
答案 1 :(得分:0)
您可以在web.xml中使用servlet-mapping,如下所示:
<servlet-mapping>
<servlet-name>yourServletName</servlet-name>
<url-pattern>/old-address</url-pattern>
<url-pattern>/new-address</url-pattern>
</servlet-mapping>
url-pattern元素可以在servlet-mapping元素中任意重复。