【发布时间】:2018-07-13 08:23:55
【问题描述】:
界面
package org.employee.employee.core.admin;
import org.apache.sling.api.resource.ResourceResolver;
public interface CustomerService {
public String getCustomerData();
}
Service Class ==> 获取 resolverFactory null
package org.employee.employee.core.admin;
import java.util.HashMap;
import java.util.Map;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(metatype = true, immediate = true)
@Service
public class CustomerServiceImpl implements CustomerService {
protected final Logger log = LoggerFactory.getLogger(this.getClass());
@Reference
private ResourceResolverFactory resolverFactory;
public String getCustomerData() {
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "CustomerService");
ResourceResolver resolver = null;
try {
resolver = resolverFactory.getServiceResourceResolver(param);
System.out.println(resolver);
} catch (LoginException loginExcp) {
log.error("Exception while getting resource resolver." + loginExcp);
}
return resolver.toString();
}
}
服务组件显示状态=>活动
用户映射器
【问题讨论】:
-
您如何访问客户服务?
-
解决了。我访问错了。
-
如果通过OSGi容器访问,OSGi将注入依赖,否则,它们将为空。我想最初你只是创建类而不使用
.getService(_interface_)。 -
@ruchikajain - 请添加您的解决方案作为答案,以便其他人从中受益。
标签: aem osgi-bundle sling aem-6