Ich habe die folgende Jersey
Ressource:Inject EJB in Jersey Ressourcenklasse
@Path("service")
public class Service implements IService {
@EJB
RESTWebserviceController restWebserviceController;
...
(wo RESTWebserviceController
ist ein @Stateless
EJB)
Wie in anderen Threads zu diesem Thema beraten, habe ich die folgende Umsetzung die InjectableProvider
Schnittstelle.
@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;
}
}
}
Noch kann der Behälter die RESTWebserviceController
nicht injizieren. Ich laufe Glassfish 3.1.2
mit 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