У меня есть следующие Jersey
ресурс:Вводят EJB в Джерси класса ресурсов
@Path("service")
public class Service implements IService {
@EJB
RESTWebserviceController restWebserviceController;
...
(где RESTWebserviceController
является @Stateless
EJB)
Как сообщили в других потоков на эту тему, я создал следующую реализацию интерфейс InjectableProvider
.
@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
@Override
public ComponentScope getScope() {
return ComponentScope.Singleton;
}
@Override
public Injectable getInjectable(ComponentContext cc, EJB ejb, Type t) {
if (!(t instanceof Class)) {
return null;
}
try {
Class c = (Class) t;
Context ic = new InitialContext();
final Object o = ic.lookup(c.getName());
return new Injectable<Object>() {
public Object getValue() {
return o;
}
};
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
По-прежнему контейнер не может вводить RESTWebserviceController
. Im работает Glassfish 3.1.2
с использованием Jersey 1.11
.
The following errors and warnings have been detected with resource and/or provider classes:
Missing dependency for field: schnittstelle.rest.controller.RESTWebserviceController schnittstelle.rest.Service.restTWebserviceController