找不到JaxRS异常映射器

时间:2016-04-01 12:21:05

标签: java jersey jax-rs web.xml

我有一个@Provider带注释的异常映射器,但Jersey并没有加载或注册它。

在我的web.xml(已修剪)中:

<servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            com.my.company;
            com.fasterxml.jackson.jaxrs.json;
        </param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

映射器:

package com.my.company.some.package;

@Provider
public class MyExceptionMapper implements ExceptionMapper<MyException> {
    @Override
    public Response toResponse(MyException exception) {
        return Response.status(Status.NOT_FOUND).build();
    }
}

我在@Path包中有com.my.company.other.package个带注释的API类,这些类可以正确找到,我可以毫无问题地访问它们。没有找到@Provider带注释的映射器。

如果我在mapper构造函数和/或toResponse方法中放置了一条日志消息,那么它们也不会显示。我不得不得出结论,泽西岛无法找到或决定不加载这些课程。我如何让它工作?

1 个答案:

答案 0 :(得分:0)

泽西岛中的提供者包属性不是递归的。它仅扫描这些包,而不是以该名称开头的包。