您必须在javax.ws.rs.core.Application中注册Provider。该应用程序应注册为服务等级高于Amdatu Wink捆绑包创建的默认服务。
以下是一个工作示例。
异常映射器本身:
@Provider public class SecurityExceptionMapper implements ExceptionMapper<SecurityException>{ @Override public Response toResponse(SecurityException arg0) { return Response.status(403).build(); } }
应用程序:
import java.util.HashSet; import java.util.Set; import javax.ws.rs.core.Application; import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; public class MyApplication extends Application { @Override public Set<Object> getSingletons() { Set<Object> s = new HashSet<Object>(); s.add(new JacksonJsonProvider()); s.add(new SecurityExceptionMapper()); return s; } }
Activator设置服务排名属性。
public class Activator extends DependencyActivatorBase{ @Override public void destroy(BundleContext arg0, DependencyManager arg1) throws Exception { } @Override public void init(BundleContext arg0, DependencyManager dm) throws Exception { Properties props = new Properties(); props.put(Constants.SERVICE_RANKING, 100); dm.add(createComponent().setInterface(Application.class.getName(), props).setImplementation(MyApplication.class)); } }