我希望使用Alfresco的org.alfresco.repo.search.impl.solr.SolrAdminHTTPClient类调用solr。但是,从标准应用程序上下文中我似乎无法访问bean search.solrAdminHTTPCLient
。尝试为我自己的bean添加依赖项和属性引用(通过xml)也失败了。有什么理由无法访问?
public class MyClass extends DeclarativeWebScript implements ApplicationContextAware{
...
SolrAdminHTTPClient adminClient = (SolrAdminHTTPClient) appContext.getBean("search.solrAdminHTTPCLient");
希望避免为标准的solr管理查询创建自己的客户端。
答案 0 :(得分:3)
通过导致this file的文件夹树来判断,我会说搜索 SubSystem 中有bean可用,这意味着它完全存在于不同的上下文中,实际上是子上下文。 因此,在尝试检索bean之前,首先需要先查找该上下文!
更新:我已经做了一些挖掘工作,我猜你在那个子环境中的窗口在this particular bean。 所以我认为你可以做到以下几点:
SwitchableApplicationContextFactory search = (SwitchableApplicationContextFactory)applicationContext.getBean("Search");
ApplicationContext searchCtx = search.getApplicationContext();
SolrAdminHTTPClient adminClient = (SolrAdminHTTPClient) searchCtx.getBean("search.solrAdminHTTPCLient");
然而,来自IRC频道的朋友提出了另一种解决方案:
为你孩子上下文中要访问的每个和每个bean设置一个单独的ChildApplicationContextFactory
,他建议你从this获得灵感。