У меня есть служба RESTful, которая вводит EJB (3.0) с помощью аннотации @EJB. Эта инъекция не работает, поскольку я получаю исключение NullPointerException, когда я пытаюсь получить доступ к методу greeting() в bean-компоненте.@ EJB инъекции не работает от службы JAX-RS на Websphere AS 8
Этот точный код работает на Glassfish 3.1 и теперь на WAS8.0.2 он терпит неудачу. Инъекция однако работает в том же приложении, когда ссылаются из сервлета, используя тот же подход
@Stateless
@Path("/hello")
public class HelloRestService {
@EJB
public HelloInterface helloImpl;
}
Мои Bean выглядит как этот
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 работает с сервлета
Я думаю, что вам не хватает имя класса сервлета –
Имя класса Sevlet больше не требуется в версии web.xml версии 3 , – Pool