Referencia de CQ5 QueryBuilder en servlet Sling

Estoy declarando un servlet de honda así

@Component(metatype = false)
@Service(Servlet.class)
@Properties({
        @Property(name = "sling.servlet.paths", value = "/bin/foo/bar"),
        @Property(name = "sling.servlet.methods", value = "POST") })
public class FooBarServlet extends SlingAllMethodsServlet {
    ...
}

Anulo doPost así

@Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
    ...
}

Y puedo publicar desde un cliente. ¡Excelente!

Lanzo lo siguiente

@Reference
private QueryBuilder queryBuilder;

Según la documentación, se debe inyectar una referencia al generador de consultas. Pero no parece ser así. En el registro veo este error

bindQueryBuilder cannot be found (java.lang.VerifyError: ...

Y cuando intento publicar en el servlet me sale esto

javax.jcr.RepositoryException: org.apache.sling.api.resource.PersistenceException: Resource at '/bin/foo/bar' is not modifiable.

Y en la consola OSGi veo que mi paquete está instalado, y esto es lo que tiene que decir sobre mi servlet

Service ID 3075 Types: javax.servlet.Servlet
Service PID: com.myproject.FooBarServlet
Component Name: com.myproject.FooBarServlet
Component ID: 5526
Vendor: Adobe

¿Alguna sugerencia sobre lo que estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta