2015-05-14 71 views
0

我已经在config.author,config.publish等配置文件夹内创建了sling:OsgiConfig节点。我试图做这样的事情来从这些节点的属性:AEM 6:SlingBindings对象为空

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; 
    } 

我打电话从吊索的servlet这样这个方法:

List tokenList = OsgiConfigUtil.fetchTokenLinksFromOsgiConfig(slingRequest); 

但类型SlingBindings的绑定对象来了空值。我不知道如何解决这个问题?

在此先感谢

回答

1

吊带的servlet是OSGi的组件,这样你就可以直接注入ConfigurationAdmin服务,使用SCR @Reference注释:

public MyServlet extends SlingSafeMethodServlet { 

    @Reference 
    private ConfigurationAdmin confAdmin; 

    public doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) { 
     confAdmin.getConfiguration("com.myuhc.TokenLinksConfig"); 
    } 
} 

无需使用SlingBindings对象,这是指在JSP脚本中提供OSGi服务。