有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java两个servlet在同一场战争中与两场独立战争中的利弊?

我最近遇到了一个障碍,这可能会使我无法完成用两个servlet打包一场战争的计划。解决方法是创建一个额外的Maven WAR模块

除了给我和客户带来额外的麻烦之外,还有什么真正的缺点吗?有优势吗

@编辑

我遇到的“障碍”是,我希望每个servlet有两种不同的身份验证机制。一个使用Spring安全性,另一个使用不同的身份验证提供程序,或者可能使用基本身份验证。请看这里:

Is it possible to use a different Spring Security AuthenticationProvider in different servlets, same WAR?


共 (3) 个答案

  1. # 1 楼答案

    主要缺点是web应用程序容器使单独的应用程序彼此完全分离。因此,如果他们使用一组通用的jar文件(例如),他们每个人都必须加载自己的版本,这会占用大量内存。而且,它们不能通过会话、ServletContext或请求转发相互通信

    优势只来自于你真正认为两场战争是独立应用的情况

    如果这两个servlet属于同一类,你应该把它们放在同一场战争中

  2. # 2 楼答案

    如果您使用的是基于容器的身份验证,我想这是通过webapp完成的。但是,如果在servlet中或通过过滤器进行身份验证,那么在同一webapp中使用两个具有不同身份验证机制的servlet是没有问题的

    对于Spring,它将在dispatchservlet映射的顶部进行分层身份验证。如果您使用的是过滤器,请确保它与每个servlet的路径相匹配,以便仅对该servlet进行身份验证

    <filter>
      <filter-name>auth1</filter-name>
      <filter-class>...</filter-class>
    </filter>
    <filter>
      <filter-name>auth2</filter-name>
      <filter-class>...</filter-class>
    </filter>
    
    <filter-mapping>
      <filter-name>auth1</filter-name>
      <url-pattern>auth1/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>auth2</filter-name>
      <url-pattern>auth2/*</url-pattern>
    </filter-mapping>
    
  3. # 3 楼答案

    一场战争可以包含任意数量的servlet。 您不应该在每次战争中遇到多个servlet的问题

    也许您可以详细说明多个servlet的问题