Foros de discusión

Разработка взаимосвязанных портлетов.

Ivan Babiankou, modificado hace 12 años.

Разработка взаимосвязанных портлетов.

New Member Mensajes: 4 Fecha de incorporación: 11/07/11 Mensajes recientes
Доброго времени суток.

Поставлена задача разработать портал на основе Liferay, для реализации нужно добавлять свои сущности и таблицы. Создал портлет в котором создал сервисы и нужные сущности, но при использовании my-name-servce.jar в остальных портлетах требовал набор impl классов, и я раскопировал куда нужно. Со временем начали вылазить ошибки ClassCastException при кастовании к примеру UniversityImpl к University, что я считал обсурдным. После разбирательства понял что classloader загружал одни и те же классы из разных мест, и хотя содержимое было одно, в понимании JVM это были разные классы. Теперь суть вопроса:

Как правельнее оформить данную ситуацию, а именно как создать набор портлетов, использующих один service layer?

На сколько я понимаю мне следует создать ext-plugin, который будет объединять несколько логически связанных портлетов и слой сервисов. Поправьте, пожалуйста где я ошибаюсь.

Спасибо за ваши ответы и мысли!
thumbnail
Dmitry Abramov, modificado hace 12 años.

RE: Разработка взаимосвязанных портлетов.

New Member Mensajes: 3 Fecha de incorporación: 11/05/11 Mensajes recientes
Все просто:

В одном проекте, ну и соответственно war файле, может быть несколько портлетов.
Если Вы работаете в Liferay IDE, то находясь внутри проекта, жмите New Liferay Portlet и далее как обычно.

Если все ОК, то Вы обнаружите в <portlet-app> и <liferay-portlet-app> два элемента <portlet>, в portlet.xml появиться еще одна строчка в <category>
Ivan Babiankou, modificado hace 12 años.

RE: Разработка взаимосвязанных портлетов.

New Member Mensajes: 4 Fecha de incorporación: 11/07/11 Mensajes recientes
Dmitry Abramov:
Все просто:


Да, действительно просто, я уже разобрался. И все же: спасибо за ответ! Я работаю в NetBeans, но и в ней не возникло проблем. Вручную переносил классы из разных проектов в один, и объявлял их в portlet.xml, liferay-portlet.xml и liferay-display.xml. Все работает!