Не работает @Interceptors

369
10 февраля 2017, 03:30

Должно выводиться сообщение "ворк", но не выводится.

Код класса с сообщением:

package test1;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class Method1 {
    @AroundInvoke
    public Object inter(InvocationContext ictx) throws Exception {
        System.out.println("Work");
        return ictx.proceed();
    }
}

Код класса, в который я хочу "вставить" код с сообщением:

package test1;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
@Stateless
public class Work {
    @Interceptors(Method1.class)
    void work() {
    }
}

ну и мейн:

package test1;
public class Test1 {
    public static void main(String[] args) {
     Work work = new Work();
     work.work();
    }
}
Answer 1

Java EE API это стандарт согласно которому происходит взаимодействие с сервером приложений. Реализацию предоставляет сервер.

Для того чтобы использовать Java EE API, в частности @Interceptors нужно выполнять код в контейнере Java EE. Для этого нужно:

  • упаковать EJB в приложение (например, WAR);
  • развернуть приложение на сервере приложений, в ходе разворачивания сервер обработает аннотации и подготовит реализацию класса;
  • получить от сервера экземпляр EJB (с помощью @EJB или @Inject);
  • полученный от сервера объект будет работать в соответствии с API.

В коде будет выглядеть примерно так:

@Inject
Work work;
...
//обращение из веб-сервиса, приложения, другого EJB
work.work;
...

В приведенном примере локальный класс Test1 создает объект класса Work. Аннотации обрабатывать нечему, соответственно работать они не будут.

  • Java EE Tutorial. Java EE containers
  • Java EE. Википедия
  • Что такое Java EE
READ ALSO
Относительный путь к файлам в IntelliJ IDEA

Относительный путь к файлам в IntelliJ IDEA

если указать путь к файлу

605
Правильное создание зависимостей JPA

Правильное создание зависимостей JPA

Объясните плиз данную ошибку я новичок в JPA/Hibernate!

343
Вопрос по synchronized

Вопрос по synchronized

Здравствуйте, вопрос по ключевому слову synchronized

311
Почему мой Parcelable возвращает null?

Почему мой Parcelable возвращает null?

Дано: при нажатии на кнопку из адаптера во фрагмент передается Parcelable:

339