1

我正在使用 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 文件实现的)

但现在由于某些原因,我决定转向 Glassfish。现在我创建了一个EAR包含两个应用程序(WAR)1.Login2. Profiles. 过滤器在com.filter包中,Login Application而包中不存在Profiles

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

更新1

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

日志中有Error:
Exception starting filter MyFilterName java.lang.InstantiationException .....
. Caused by: java.lang.ClassNotFoundException: com.myfilter.MyFilterName

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

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

4

1 回答 1

1

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

于 2013-04-24T07:34:22.783 回答