2016-04-18 14 views
2

I OpenEJB als Anwendungsserver bin mit und ich mag eine JAX-RS-Ressource implementieren, die einigen benannte Dienst erfordert in seinem Konstruktor injiziert werden.Injizieren von Konstruktor mit OpenEJB Service in JAX-RS-Ressource namens

Meine Ressource wie folgt aussieht:

@Singleton 
@Path("/") 
public class Resource { 

    private Service service; 

    @Inject 
    public Resource(@Named("service") Service service) { 
     this.service = service; 
    } 
} 

Leider klagt OpenEJB weil es nicht mein Konstruktor nicht für gültig sein, weil der @Named Anmerkung des Service Argument zu dekorieren.

java.lang.RuntimeException: Resource class class test.Resource has no valid constructor 
at org.apache.openejb.server.cxf.rs.CdiResourceProvider.validateConstructorExists(CdiResourceProvider.java:138) 
at org.apache.openejb.server.cxf.rs.CdiResourceProvider.<init>(CdiResourceProvider.java:100) 
at org.apache.openejb.server.cxf.rs.OpenEJBPerRequestPojoResourceProvider.<init>(OpenEJBPerRequestPojoResourceProvider.java:28) 
at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication(CxfRsHttpListener.java:522) 

Die Umsetzung des OpenEJB CdiResourceProvider eindeutig nicht etwas anderes als die für Konstruktorargumente Jax-RS @Context Anmerkung wollen ... Ist es von OpenEJB unterstützt?

Antwort

1

JAX-RS hat eine spezifische Anforderung für einen No-args-Konstruktor. Das wird richtig sein von irgendwelchen JAX-RS impl, es ist nicht spezifisch für die OpenEJB Integration.