AEM 6:SlingBindings 对象为空
AEM 6: SlingBindings object is null
我在 config.author、config.publish 等配置文件夹中创建了 sling:OsgiConfig 个节点。我正在尝试通过执行以下操作从这些节点获取属性:
public static List fetchTokenLinksFromOsgiConfig(final SlingHttpServletRequest slingRequest) throws IOException {
List<String> tokenlinksList = new ArrayList<String>();
SlingBindings bindings = (SlingBindings) slingRequest.getAttribute(SlingBindings.class.getName());
log.info("=================inside fetchTokenLinksFromOsgiConfig======================"+bindings);
SlingScriptHelper sling = bindings.getSling();
Configuration conf = sling.getService(org.osgi.service.cm.ConfigurationAdmin.class).getConfiguration("com.xxxxx.TokenLinksConfig");
log.info("=================inside fetchTokenLinksFromOsgiConfig:::taking configurations======================");
String TokenId = (String) conf.getProperties().get("TokenId");
String TokenSecret = (String) conf.getProperties().get("TokenSecret");
String OAuthLink = (String) conf.getProperties().get("OAuthLink");
log.info("=================TokenId:::TokenSecret:::OAuthLink======================"+TokenId +" "+TokenSecret+" "+OAuthLink);
if(!StringUtil.isEmpty(TokenId)) {
tokenlinksList.add(TokenId);
}
if(!StringUtil.isEmpty(TokenSecret)) {
tokenlinksList.add(TokenSecret);
}
if(!StringUtil.isEmpty(OAuthLink)) {
tokenlinksList.add(OAuthLink);
}
return tokenlinksList;
}
我正在从这样的 sling servlet 调用此方法:
List tokenList = OsgiConfigUtil.fetchTokenLinksFromOsgiConfig(slingRequest);
但是 SlingBindings 类型的绑定对象即将变为空。我不知道如何解决这个问题?
提前致谢
Sling servlet 是一个 OSGi 组件,因此您可以使用 SCR @Reference
注释直接注入 ConfigurationAdmin
服务:
public MyServlet extends SlingSafeMethodServlet {
@Reference
private ConfigurationAdmin confAdmin;
public doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {
confAdmin.getConfiguration("com.myuhc.TokenLinksConfig");
}
}
无需使用 SlingBindings 对象,它旨在在 JSP 脚本中提供 OSGi 服务。
我在 config.author、config.publish 等配置文件夹中创建了 sling:OsgiConfig 个节点。我正在尝试通过执行以下操作从这些节点获取属性:
public static List fetchTokenLinksFromOsgiConfig(final SlingHttpServletRequest slingRequest) throws IOException {
List<String> tokenlinksList = new ArrayList<String>();
SlingBindings bindings = (SlingBindings) slingRequest.getAttribute(SlingBindings.class.getName());
log.info("=================inside fetchTokenLinksFromOsgiConfig======================"+bindings);
SlingScriptHelper sling = bindings.getSling();
Configuration conf = sling.getService(org.osgi.service.cm.ConfigurationAdmin.class).getConfiguration("com.xxxxx.TokenLinksConfig");
log.info("=================inside fetchTokenLinksFromOsgiConfig:::taking configurations======================");
String TokenId = (String) conf.getProperties().get("TokenId");
String TokenSecret = (String) conf.getProperties().get("TokenSecret");
String OAuthLink = (String) conf.getProperties().get("OAuthLink");
log.info("=================TokenId:::TokenSecret:::OAuthLink======================"+TokenId +" "+TokenSecret+" "+OAuthLink);
if(!StringUtil.isEmpty(TokenId)) {
tokenlinksList.add(TokenId);
}
if(!StringUtil.isEmpty(TokenSecret)) {
tokenlinksList.add(TokenSecret);
}
if(!StringUtil.isEmpty(OAuthLink)) {
tokenlinksList.add(OAuthLink);
}
return tokenlinksList;
}
我正在从这样的 sling servlet 调用此方法:
List tokenList = OsgiConfigUtil.fetchTokenLinksFromOsgiConfig(slingRequest);
但是 SlingBindings 类型的绑定对象即将变为空。我不知道如何解决这个问题?
提前致谢
Sling servlet 是一个 OSGi 组件,因此您可以使用 SCR @Reference
注释直接注入 ConfigurationAdmin
服务:
public MyServlet extends SlingSafeMethodServlet {
@Reference
private ConfigurationAdmin confAdmin;
public doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) {
confAdmin.getConfiguration("com.myuhc.TokenLinksConfig");
}
}
无需使用 SlingBindings 对象,它旨在在 JSP 脚本中提供 OSGi 服务。