OOTB /libs/foundation/global.jsp
を含むと、定義されたデフォルトのタグlibs、スリングオブジェクト、およびCQオブジェクトを取得できます。
sling.getService
メソッドにサービスの完全修飾名を渡すと、SlingRepositoryがOSGiバンドル管理コンポーネントによってサービスに注入されます。あなたのコードスニペットsling.getService(InverterFactory.class)
サービスで
はスリングで利用可能なOSGiのサービスを取得するためのsling
SlingScriptHelperオブジェクトから取得され、これは一般的にインターフェイス上で呼び出されます。 sling.getService
を使用してServiceオブジェクトを作成したら、そのサービスによって公開されているすべてのメソッドを呼び出すことができます。
はScriptHelper APIドキュメントを見てくださいとsling scripting variables
<% your.qualified.path.InverterFactory Invfac = sling.getService(your.qualified.path.InverterFactory.class); %> <c:set var="inverterData" value='<%=Invfac.getOverview(slingRequest, resourceResolver)%>' scope="request" />
以下のtryコードスニペットも、私はSlingRequestオブジェクトはすべての問題を起こさなければならないとは思わない、私は持っていますあなたのコードスニペットの構文を試して、ちょうどOSGIサービスからいくつかの文字列を返しました、それはうまく動作します。以下は
HelloServiceインタフェース
public interface HelloService { public String getRepositoryName(); public String 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;
}
}
OSGICalling.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}"/>
私の例であります
アウトプット
出典
2017-02-07 21:45:26
VAr