В настоящее время я работаю над Liferay 7.1.2.ga3 CE с tomcat и просматривал раздел OSGI руководства в официальной документации. Вот этот: Документы
Я решил дать ему шанс сделать самый простой проект. Я создал Liferay Workspace в своей идее IntelliJ и добавил некоторый компонент, описанный в турориале.
Проблема в том, что он либо не внедряет, либо внедряет, но не получает зависимость, потому что в этом случае в Для потребителя переменная _applicationServices всегда имеет значение NULL.
РЕДАКТИРОВАТЬ: Я задавал тот же вопрос на официальном форуме Liferay здесь: Вопрос в Liferay.org
Вот код :
API:
@ProviderType
public interface ApplicationServices {
String getSearchFiltersForRegister(String registerCode);
}
Поставщик:
@Component(
immediate = true,
property = {
},
service = ApplicationServices.class
)
public class ApplicationServicesImpl implements ApplicationServices {
@Override
public String getSearchFiltersForRegister(String registerCode) {
return "OSGI modularity made service";
}
}
Потребитель:
@ManagedBean(name = "registerSearchBean")
@ViewScoped
@Component(
immediate = true,
property = {
"osgi.command.scope=getSearchFiltersForRegister",
"osgi.command.function=getSearchFiltersForRegister"
},
service = Object.class
)
public class RegisterSearchBean {
public String message;
@Reference
private ApplicationServices _applicationServices;
@PostConstruct
public void initBean(){
getSearchFiltersForRegister();
}
public void getSearchFiltersForRegister(){
ApplicationServices applicationServices=_applicationServices;
message=applicationServices.getSearchFiltersForRegister("asd");
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
ПРИМЕЧАНИЕ: Я также пытался отделить модуль потребления в другом Класс и использовать его в этом bean-компоненте без успеха.
Дополнительная информация:
- Проект представляет собой gradle LiferayWorkaspace.
- API и сервисы модули генерируются с помощью плагина Liferay в папке модулей.
- Модуль JSF генерируется с помощью архетипа maven с поддержкой gradle в папке «war».
- Зависимости правильно определены, и все они правильно развернуты на Liferay Server. По крайней мере, это так .... при развертывании не появляются ошибки для отсутствующих классов.
Что я делаю не так и почему службы приложений всегда равны нулю?