使servlet过滤器适用于EAR中的所有Web应用程序

时间:2013-04-24 06:03:20

标签: java jsp glassfish servlet-filters servlets

我正在使用JSP& amp;开发一个Web应用程序。的servlet。

我为登录目的开发了一个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 主页 - &gt; conf-&GT; Web.xml 然后该过滤器适用于Tomcat中部署的所有应用程序。(这是我想在Glassfish中为EAR文件实现的目标)

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

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

UPDATE1

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

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

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

那么我应该如何使其适用于{{1}}(EAR中的所有WAR)。

1 个答案:

答案 0 :(得分:1)

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