Jakarta ee TomEE能否加载在战争中部署的筛选器类?

Jakarta ee TomEE能否加载在战争中部署的筛选器类?,jakarta-ee,dependencies,servlet-filters,apache-tomee,Jakarta Ee,Dependencies,Servlet Filters,Apache Tomee,我向RESTful web应用程序添加了一个过滤器。该应用程序使用JavaEE6,部署在ApacheTomee服务器1.7.3中 我添加的筛选器类如下所示: package com.company.filter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; impor

我向RESTful web应用程序添加了一个过滤器。该应用程序使用JavaEE6,部署在ApacheTomee服务器1.7.3中

我添加的筛选器类如下所示:

package com.company.filter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.Response;

public class LoggingFilter implements Filter {

    private static final Logger LOG = LoggerFactory.getLogger("std");

    @Override
    public void init(final FilterConfig filterConfig) throws ServletException {

        LOG.info("Initializing filter");
    }

    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain)
        throws IOException, ServletException {

        LOG.info("Processing a request...");

        // filter logic
    }

    public void destroy() {
        LOG.info("Destroying filter");
    }
}
<filter>
    <filter-name>LoggingFilter</filter-name>
    <filter-class>com.company.filter.LoggingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoggingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
web.xml(特定于应用程序,部署在应用程序war中)如下所示:

package com.company.filter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.Response;

public class LoggingFilter implements Filter {

    private static final Logger LOG = LoggerFactory.getLogger("std");

    @Override
    public void init(final FilterConfig filterConfig) throws ServletException {

        LOG.info("Initializing filter");
    }

    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain)
        throws IOException, ServletException {

        LOG.info("Processing a request...");

        // filter logic
    }

    public void destroy() {
        LOG.info("Destroying filter");
    }
}
<filter>
    <filter-name>LoggingFilter</filter-name>
    <filter-class>com.company.filter.LoggingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoggingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
注意:包和类名是正确的

如果我将filter类打包在一个单独的jar中,并将该jar放在libs目录中,那么应用程序确实会加载filter类,并且工作正常

但我不想生成另一个工件并部署该工件,因为它会使部署过程更加复杂


我的问题是:不能加载应用程序中包含的筛选器吗?如果可以,那我做错了什么?(看起来TomEE在初始化自己时根本看不到filter类)

错误消息说该类名为
com.company.filter.LoggingFilter
。web.xml表示该类名为
com.company.LoggingFilter
。类的发布代码没有任何包语句。三者中哪一个是正确的?一切都是连贯的吗?发布真实代码和错误消息,否则无法诊断实际问题。另外,请告诉我们.class文件在war中的位置,并发布异常的完整堆栈跟踪。但是您仍然没有发布完整的堆栈跟踪,并且仍然没有说明.class文件在war中的位置。嗨,最后,在尝试了一段时间后,这对我来说是有效的。我不知道我的问题到底是什么,但我想我犯了一些愚蠢的错误。我的问题的答案是,可以使用部署在war中的筛选器(服务器提取类,只要它在文件夹中,它就可以工作)