У меня проблема с Tomey Plume 7.0.2.JAX-RS - Создание фильтра, расширяющего ContainerRequestFilter
Я создал фильтр, который так:
package com.gfp.rest.providers;
import java.io.IOException;
import javax.annotation.Priority;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
@PreMatching
@Provider
@Priority(value = 1)
public class AuthenticationFilter implements ContainerRequestFilter
{
public AuthenticationFilter()
{
System.out.println("AuthenticationFilter.AuthenticationFilter()");
}
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
System.out.println("AuthenticationFilter.filter()");
String token = requestContext.getHeaderString("token");
ResponseBuilder responseBuilder = null;
Response response = null;
// check if token is empty
if (token.isEmpty()) {
responseBuilder = Response.serverError();
response = responseBuilder.status(Status.UNAUTHORIZED).build();
requestContext.abortWith(response);
}
}
}
Вот моя Rest Применение:
package com.gfp.rest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("api/v1")
public class RestApplication extends Application
{
}
Проблема: Фильтр, кажется, не дозвонились. Я прочитал много документации и много других сообщений, я не могу найти какое-либо решение. Есть что-то особенное, что я пропустил?
Большое спасибо!
Если вы сделаете это, вам также необходимо будет зарегистрировать все классы ресурсов. Пустой класс приложения _supposed_ работает, поскольку он указан для запуска сканирования пути к классам классов «@ Путь» и «@ Поставщик». Когда вы добавляете класс, вы отключите сканирование классов и должны сами регистрировать все. –
Получил NullPointerException, как показано ниже. Есть ли «автоматический способ», чтобы заставить его работать с TomEE? –