Hi,
I use an Application object (with @JaxrsApplicationSelect), injection via DS
does not work:
@Component(service = Rest.class, scope = ServiceScope.PROTOTYPE)
@JaxrsResource
@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME +
"=MyApplication)")
@JSONRequired
@Produces(MediaType.APPLICATION_JSON)
public class Rest {
private PersonService personService;
/*
public Rest() {
System.out.println("Constructing REST");
this.personService = new PersonServiceImpl();
}
*/
@Activate
public Rest(final @Reference PersonService personService) {
System.out.println("Constructing REST");
this.personService = personService;
}
@GET
@Path("/person")
public List<PersonDto> listPersons() {
return personService.select();
}
@GET
@Path("/test")
public String test() {
return "test";
}
}
The @Activate constructor is not called. If I enable the Rest() constructor
that one is called.
if I disable @JaxrsApplicationSelect, the personService is injected.
It seems that once an Application class is used (see below), DS is not
working.
This leads to the question what I have to set up for the Application object:
@Component(service=Application.class, property =
{"servlet.init.hide-service-list-page=true"} )
@JaxrsApplicationBase("example")
@JaxrsName("MyApplication")
public class MyApplication extends Application {
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
set.add(Rest.class);
return set;
}
}
Jax-rs-whiteboard 2.02
Karaf 4.4.3
Thanks,
-- Jaap