Jsp 您可以将WebFilter打包到库中吗

Jsp 您可以将WebFilter打包到库中吗,jsp,servlets,annotations,java-ee-6,servlet-filters,Jsp,Servlets,Annotations,Java Ee 6,Servlet Filters,如果是的话,你怎么做 是的,听起来像是我的最后一个问题。这基本上是同一个问题。我有一个@javax.servlet.annotation.WebFilter,当直接打包到war中时,它工作得很好。现在我想将过滤器移到库中。但如果我这么做了,它就不会再被叫来了 有什么陷阱是我必须注意的还是根本不可能的?设置 这意味着此web应用程序的元数据不限于此特定xml(以及webapp的类),而是可以由第三方库使用元数据 还可以看看“web片段”。您可以在jar的META-INF中定义web fragmen

如果是的话,你怎么做

是的,听起来像是我的最后一个问题。这基本上是同一个问题。我有一个
@javax.servlet.annotation.WebFilter
,当直接打包到war中时,它工作得很好。现在我想将过滤器移到库中。但如果我这么做了,它就不会再被叫来了

有什么陷阱是我必须注意的还是根本不可能的?

设置

这意味着此web应用程序的元数据不限于此特定xml(以及webapp的类),而是可以由第三方库使用元数据

还可以看看“web片段”。您可以在jar的
META-INF
中定义
web fragment.xml
,并在其中映射所有servlet和过滤器


.

只需在JAR项目的
/META-INF
文件夹中删除一个与Servlet 3.0兼容的空文件
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="yourProjectId" version="3.0">
</web-app>

Servlet 3.0容器默认情况下会扫描JAR中是否存在
/META-INF/web.xml
文件,如果存在,则扫描JAR中的所有类以查找Servlet 3.0注释。不需要其他设置


顺便说一句,JSF2.0在
/META-INF/faces config.xml

中也有类似的技术,我还没有使用过过滤器注释,所以可能会在这里退出。也许可以尝试将带有WebFilter注释的类打包到一个jar中,然后将该jar放入war/WEB-INF/lib目录中?如果使用EAR,那么也可以将lib打包到那里。@Martin这是一样的。我有一个ear文件,包含一个war和ear库,其中涉及ear的war使用的jar。如果此类不属于war,Webfilter注释不会对web应用程序产生影响,因为
web fragment.xml
metadata complete
都可以正常工作。为了让那些可能会发现这个问题的人受益:-1)我使用maven将库构建为标准jar文件-2)我让maven将库作为标准库放置在应用程序EAR的
/lib
目录中。尝试了这个,但没有成功。该文件肯定包含在jar中。Tomcat7.53Java60。奇怪的是,它确实在Eclipse中工作。war和jar都具有相同的web.xml,唯一的区别是
id
值。