У меня есть служба RESTful, которая внедряет EJB (3.0) с помощью аннотации @EJB. Эта инъекция не работает, поскольку я получаю исключение NullPointerException при попытке доступа к методу приветствия () в компоненте.
Этот точный код работает на Glassfish 3.1, а теперь на WAS8.0.2 происходит сбой. Однако внедрение выполняется в том же приложении при обращении к сервлету с использованием точно такого же подхода
@Stateless
@Path("/hello")
public class HelloRestService {
@EJB
public HelloInterface helloImpl;
}
Мой Боб выглядит так
package impl;
@Stateless
@Local
public class HelloImpl implements iface.HelloInterface {
@Override
public String greeting() {
return "Hello developer";
}
}
Я попытался выполнить поиск по реализации, используя имя jndi, которое выводится на печать при запуске сервера
helloimpl = (HelloImpl) new InitialContext().lookup("java:global/REST_EAR/REST_WAR/HelloImpl!iface.HelloInterface");
это, однако, вызывает ClassCastException
java.lang.ClassCastException: iface.EJSLocal0SLHelloImpl_f8ca883b incompatible with impl.HelloImpl
Могу ли я прочитать много в этом ..?
Сейчас я использую Wink в качестве реализации JAX-RS 1.1. Я ранее использовал Джерси с такими же результатами.
Кто-нибудь знает, если это проблема JAX-RS / WAS, приводящая к сбою DI ..? Это определенно связано с REST, как уже говорилось ранее, инъекция @EJB работает с сервлетом