我正在使用 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.Login
和2. Profiles
. 过滤器在com.filter
包中,Login Application
而包中不存在Profiles
。
我的问题是我应该把上面的XML
代码放在哪里,这将确保过滤器适用于所有应用程序(WAR)EAR
?
更新1
如果我将上面的 XML 代码放在defualt-web.xml
目录下,glassfish\domains\domain1\config\
那么它适用于Login
Applicaion,但不适用于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)。