Почему EJB Injection не работает на Interceptor? - PullRequest
0 голосов
/ 24 июня 2019

Я создал перехватчик, который перехватывает вызов моего метода, а также его ответ.Что происходит, так это то, что я должен использовать службу во время перехвата, и служба прекрасно работает при перехвате запроса, но при перехвате в ответе она равна нулю.

Я попытался отделить перехватчик, чтобы реализация WriterInterceptor была вдругой класс, но, похоже, он ведет себя так же.

@POST
@Path("/test")
@MyAnnotation
public void test(
        final @Suspended AsyncResponse response,
        final @ApiParam(value = "Test.", required = true) @FormParam("test") String test)
        throws ServiceException {

    ExecutorService executorService = Executors.newSingleThreadExecutor();
    executorService.submit(new AsyncResponseCallable(response) {

        @Override
        public Response execute() throws Exception {
            Object object = service.foo();
      Status status = Status.OK;

            return Response.status(status).entity(object).build();
        }
    });
}


@Provider
@MyAnnotation
public class MyInterceptor implements WriterInterceptor {

    @EJB
    private MyService myService;

    @AroundInvoke
    public Object interceptor(InvocationContext context) throws Exception {
    myService.test();
        return context.proceed();
    }

    @Override
    public void aroundWriteTo(WriterInterceptorContext context) throws WebApplicationException {
        myService.test();
    context.proceed();
    }

}

@Stateless
public class MyService {

    public void test() {
        System.out.println("Done");
    }

}

В методе aroundWriteTo должен быть экземпляр myService, введенный аннотацией EJB, но он имеет значение null.Ребята, можете ли вы помочь мне разобраться в этом?

...