【问题标题】:make servlet filter applicable for all web applications in EAR使 servlet 过滤器适用于 EAR 中的所有 Web 应用程序
【发布时间】:2013-04-24 06:03:20
【问题描述】:

我正在使用 JSP 和 Servlet 开发一个 Web 应用程序。

我为登录目的开发了一个 servlet 过滤器。它检查用户是否已登录,如果用户已登录,则它允许访问所请求的资源,否则它将请求重定向到登录页面。而且效果很好。

Web.xml

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.myfilter.MyFilter</filter-class>
    <init-param>
        <param-name>PARAM_NAME_HERE</param-name>
        <param-value>PARAM_VALUES_HERE</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如果我将上面的代码放在Tomcat Home-> conf-> Web.xml 那么过滤器适用于部署在Tomcat 中的所有应用程序。(这就是我想要的在 Glassfish 中实现 EAR 文件)

但现在对于some reasons,我决定转向 Glassfish。现在我创建了一个EAR 文件,其中包含两个应用程序(WAR)1.Login2. Profiles。过滤器位于com.filter 包中,该包位于Login Application 中,但不存在于Profiles 中。

我的问题是我应该把XML 代码放在哪里,这将确保过滤器适用于EAR 中的所有应用程序(WAR)?

更新1

如果我将上述 XML 代码放在 defualt-web.xml 中,它位于 glassfish\domains\domain1\config\ 目录下,则它适用于 Login 应用程序,但不适用于位于同一 EAR 文件中的 Profiles 应用程序。

日志中有错误:
异常启动过滤器 MyFilterName java.lang.InstantiationException
.....
.....
引起:java.lang.ClassNotFoundException: com.myfilter.MyFilterName

[注意:过滤器在Login应用程序(WAR)中,而不是在Profiles应用程序(WAR)]

那么我应该如何使它适用于Profiles(EAR 中的所有 WAR)。

【问题讨论】:

    标签: java jsp glassfish servlet-filters servlets


    【解决方案1】:

    将包含您的过滤器的 jar 放入 glassfish\domains\domain1\lib 文件夹

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2011-01-07
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2015-07-10
      • 2018-10-28
      • 2014-05-07
      • 2020-09-17
      相关资源
      最近更新 更多