Osgi AEM CQ5将SlingHttpServletRequest对象传递给服务
我试图将SlingRequest对象从组件jsp传递到osgi服务,如下所示。但该服务尚未注册。(不知道为什么?)Osgi AEM CQ5将SlingHttpServletRequest对象传递给服务,osgi,aem,Osgi,Aem,我试图将SlingRequest对象从组件jsp传递到osgi服务,如下所示。但该服务尚未注册。(不知道为什么?) 问题:是否允许将SlingRequest对象从组件jsp传递到osgi服务?如果允许,为什么我的服务没有注册。如果我取出SlingRequest对象,服务将被注册,我可以从jsp调用该服务。包括您的OOTB/libs/foundation/global.jsp使您可以获得定义的默认标记libs、sling对象和CQ对象 当您将服务的完全限定名传递给sling.getServic
问题:是否允许将SlingRequest对象从组件jsp传递到osgi服务?如果允许,为什么我的服务没有注册。如果我取出SlingRequest对象,服务将被注册,我可以从jsp调用该服务。包括您的OOTB
/libs/foundation/global.jsp
使您可以获得定义的默认标记libs、sling对象和CQ对象
当您将服务的完全限定名传递给sling.getService
方法时,SlingRepository将由OSGi捆绑包管理的组件注入到服务中
在您的代码片段sling.getService(InverterFactory.class)
中,从sling
SlingScriptHelper对象获取服务,以检索sling中可用的OSGi服务,通常会在接口上调用该服务。使用sling.getService
创建服务对象后,可以调用该服务公开的任何方法
请看一看api文档和
尝试下面的代码片段
另外,我不认为SlingRequest对象会引起任何问题,我已经尝试了您的代码片段语法,并且刚刚从OSGI服务返回了一些字符串,它工作得很好。下面是我的例子
HelloService接口
公共接口HelloService{
公共字符串getRepositoryName();
公共字符串getRepositoryName(SlingHttpServletRequest slingRequest,ResourceResolver ResourceResolver);
}
HelloServiceImpl
@Service
@Component(metatype = false)
public class HelloServiceImpl implements HelloService {
protected final Logger log = LoggerFactory.getLogger(this.getClass());
@Reference
private SlingRepository repository;
public String getRepositoryName() {
return repository.getDescriptor(Repository.REP_NAME_DESC);
}
public String getRepositoryName(SlingHttpServletRequest slingRequest, ResourceResolver resourceResolver) {
log.info("*** Inside my interface impl OSGI ***");
String returnstr = repository.getDescriptor(Repository.REP_NAME_DESC)+" Data from OSGI";
//return repository.getDescriptor(Repository.REP_NAME_DESC);
return returnstr;
}
}
oslogicaling.jsp
<%@ page import="com.mycompany.myrestservice.HelloService" %>
<%
com.mycompany.myrestservice.HelloService hs = sling.getService(com.mycompany.myrestservice.HelloService.class);
String repo = hs.getRepositoryName() ;
out.println("myrepo::" + repo);
%>
<c:set var="inverteraa" value='<%=sling.getService(com.mycompany.myrestservice.HelloService.class).getRepositoryName(slingRequest,resourceResolver)%>' />
<c:out value="${inverteraa}"/>
输出
<%@ page import="com.mycompany.myrestservice.HelloService" %>
<%
com.mycompany.myrestservice.HelloService hs = sling.getService(com.mycompany.myrestservice.HelloService.class);
String repo = hs.getRepositoryName() ;
out.println("myrepo::" + repo);
%>
<c:set var="inverteraa" value='<%=sling.getService(com.mycompany.myrestservice.HelloService.class).getRepositoryName(slingRequest,resourceResolver)%>' />
<c:out value="${inverteraa}"/>