2016-02-10 4 views
1

Я надеюсь сделать некоторые звонки в solr, используя alpresco's org.alfresco.repo.search.impl.solr.SolrAdminHTTPClient класс. Однако этот компонент search.solrAdminHTTPCLient не представляется мне доступным из стандартного контекста приложения. Попытка добавить ссылку зависимостей и свойств для моего собственного компонента (через xml) также не удалась. По какой причине это недоступно?Невозможно загрузить Alfresco bean

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

Хотелось бы избежать создания собственных клиентов для стандартных запросов solr admin.

ответ

3

Судя по дереву папок, ведущее к this file, я бы сказал, что боб доступен в поисковой Subsystem, который означает, что он живет совершенно в другом контексте, контекст ребенка на самом деле. Итак, вам нужно сначала найти этот контекст, прежде чем пытаться извлечь ваш bean-компонент!


UPDATE: Я сделал некоторые копали, и я думаю, что ваше окно в этом контексте ребенка в this particular bean. Так что я думаю, что вы можете сделать следующее:

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

друг от канала IRC имеет, однако предложил альтернативное решение: создать индивидуальный ChildApplicationContextFactory для каждого боба Вы для доступа в контексте вашего ребенка, и он предложил вам получить вдохновение от this.

+0

Похоже, вы определенно ведете меня в правильном направлении. Любые хорошие примеры того, как загрузить компонент, живущий в другом контексте? – DocWatson

+1

проверить мое обновление! –

+0

Это привело меня к финишу! Для его работы была одна небольшая настройка: SwitchableApplicationContextFactory search = (SwitchableApplicationContextFactory) appContext.getBean («Поиск»); – DocWatson

Смежные вопросы