我有一个@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
方法中放置了一条日志消息,那么它们也不会显示。我不得不得出结论,泽西岛无法找到或决定不加载这些课程。我如何让它工作?
答案 0 :(得分:0)
泽西岛中的提供者包属性不是递归的。它仅扫描这些包,而不是以该名称开头的包。