Я создал перехватчик, который перехватывает вызов моего метода, а также его ответ.Что происходит, так это то, что я должен использовать службу во время перехвата, и служба прекрасно работает при перехвате запроса, но при перехвате в ответе она равна нулю.
Я попытался отделить перехватчик, чтобы реализация 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.Ребята, можете ли вы помочь мне разобраться в этом?