我正在使用吊索servlet。在那里我使用javax.jcr.Session
作为参考。
在进行构建之后,当我在系统/控制台/组件中看到时,我看到以下错误
参考会议["不满意","服务名称: javax.jcr.Session","基数:1..1","政策:静态","政策 选项:不情愿","没有服务约束"]
我该如何解决这个问题?
答案 0 :(得分:4)
javx.jcr.Session
不是服务组件,因此您无法使用@Reference
引用它(请参阅http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#reference)。
如果您需要当前用户会话,可以从SlingHttpServletRequest对象中提取它,如下所示:
Session session = slingHttpServletRequest.getResourceResolver()
.adaptTo(Session.class);
如果您需要其他用户的会话(技术用户可以使用"更好"权限),您可以使用ResourceResolverFactory
,这是一种可以引用的服务。
答案 1 :(得分:3)
javax.jcr.Session
不是服务,因此无法注入@Reference
注释。
要获得会话,您可以执行以下操作 -
在AEM 6.x中,您可以使用这样的代码。
/**
* Gets the service resource resolver.
*
* @return resourceResolver.
* @throws LoginException - exception if unable to login to repo.
*/
public static ResourceResolver getServiceResourceResolver(ResourceResolverFactory resourceResolverFactory) throws LoginException {
final Map<String, Object> authParam = new HashMap();
authParam.put(ResourceResolverFactory.SUBSERVICE, APPLICATION_READER_SUBSERVICE.value());
return resourceResolverFactory.getServiceResourceResolver(authParam);
}
您可以参考上述方法的示例实现的here