2016-02-10 30 views
1

我希望使用Alfresco的org.alfresco.repo.search.impl.solr.SolrAdminHTTPClient類來調用solr。然而,這個bean search.solrAdminHTTPCLient似乎無法從標準應用程序上下文中訪問。嘗試爲我自己的bean(通過xml)添加依賴項和屬性引用也失敗了。任何原因都無法訪問?無法加載Alfresco豆

public class MyClass extends DeclarativeWebScript implements ApplicationContextAware{ 
... 
SolrAdminHTTPClient adminClient = (SolrAdminHTTPClient) appContext.getBean("search.solrAdminHTTPCLient"); 

想避免爲標準solr管理員查詢創建自己的客戶端。

回答

3

通過文件夾樹導致this file來看,我會說,豆在搜索子系統,這意味着它在不同的環境完全生活,其實孩子上下文中可用。 因此,在嘗試檢索bean之前,您需要首先查找該上下文!


更新:我已經做了一些挖掘,我想,你的窗口,這個孩子方面是this particular bean。 所以我認爲你可以做到以下幾點:

SwitchableApplicationContextFactory search = (SwitchableApplicationContextFactory)applicationContext.getBean("Search"); 
ApplicationContext searchCtx = search.getApplicationContext(); 
SolrAdminHTTPClient adminClient = (SolrAdminHTTPClient) searchCtx.getBean("search.solrAdminHTTPCLient"); 

從IRC頻道一位朋友卻提出了另一種解決方案: 建立一個單獨的ChildApplicationContextFactory爲每一個豆你要在你的孩子上下文的訪問,他建議你從this獲得一些靈感。

+0

聽起來像你肯定把我帶往正確的方向。有關如何加載生活在不同環境中的bean的好例子? – DocWatson

+1

檢查我的更新! –

+0

這讓我走到了終點!有一個小的調整,使其工作: SwitchableApplicationContextFactory搜索=(SwitchableApplicationContextFactory)appContext.getBean(「搜索」); – DocWatson