簡體   English   中英

將Jersey2 ContainerRequestFilter與web.xml中的過濾器標記一起使用

[英]Use Jersey2 ContainerRequestFilter with filter notation in web.xml

我正在嘗試通過web.xml將Jersey2 ContainerRequestFilter添加到Webapp。 目前,我總是用符號與servlet的描述在這里

<servlet>
    <servlet-name>MyApplication</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        ...
    </init-param>
</servlet>
...
<servlet-mapping>
    <servlet-name>MyApplication</servlet-name>
    <url-pattern>/myApp/*</url-pattern>
</servlet-mapping>

現在在另一種情況下,我沒有要在Tomcat上運行的servlet而是一個wicket應用程序,我想將其與過濾器一起使用。 因此,我嘗試使用替代過濾器表示法,如上述同一篇文章中所述(示例4.10):

    <filter>
        <filter-name>MyApplication</filter-name>
        <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
        <init-param>
            ...
        </init-param>
    </filter>
    ...
    <filter-mapping>
        <filter-name>MyApplication</filter-name>
        <url-pattern>/myApp/*</url-pattern>
    </filter-mapping>

我已成功地將它與Jersey1過濾器符號結合使用,但無法使其與Jersey2過濾器一起使用(該過濾器是最新的,因此我更喜歡它而不是較舊的過濾器)。

不幸的是,我發現此功能的文檔化很差。 任何人都可以幫忙,如果可行的話,怎么做呢?

正如@peeskillet在評論中提到的那樣,我必須在Filter頂部添加@Provider批注,以使它可以被Jersey拾取。 為任何試圖找到解決方案的人添加此答案。 對於ContainerResponseFilter也可以執行相同的操作。

import java.io.IOException;

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;


@Provider
public class LoggingFilter implements ContainerRequestFilter,ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        //DO Stuff
    }

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
            throws IOException {
        //DO Stuff
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM