2015-05-14 73 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服務。