Два портлета с одинаковой базой данных

Я разрабатываю портал Liferay, и у меня есть один портлет, который обрабатывает административную сторону портала, а другой - клиентскую. Дело в том, что клиенты не видят страницу администратора (в том числе портлет). Также я создал собственную базу данных для портала (я включил свои собственные таблицы в базу данных Liferay с помощью Service Builder). Теперь я хочу использовать ту же базу данных, чтобы получать из нее информацию с помощью клиентского портлета.

Любые идеи?

Я использую Liferay 6.1 с плагином Tomcat и Liferay SDK для Eclipse.


person JohnRambo    schedule 15.05.2013    source источник


Ответы (3)


Вы можете скопировать [имя портлета] -service.jar из Web-Inf / lib и вставить его в папку lib любого другого портлета. Еще лучше, если вы можете сделать это с помощью maven и добавить эту банку в качестве зависимости. Таким образом, вы можете получить доступ к служебным классам, предоставляемым вашей службой, к любому другому портлету.

person yannicuLar    schedule 15.05.2013
comment
Еще лучше, если вы используете Liferay's Plugin SDK, установите required-deployment-contexts в liferay-plugin-package.properties, и он автоматически скопирует последнюю во время компиляции и обеспечит развертывание после подключаемого модуля, который используют его службы. - person rp.; 15.05.2013
comment
@rp звучит очень круто, честно говоря, не знал об этой функции. Спасибо, что поделился - person yannicuLar; 16.05.2013

Все портлеты в проекте подключаемого модуля совместно используют службу построителя служб, созданную этим подключаемым модулем (потому что они попадают в один военный файл и, таким образом, имеют общий контекст времени выполнения). Таким образом, вы можете просто поместить оба своих портлета в один и тот же плагин, и они оба смогут получить доступ к службам / таблицам построителя сервисов этого плагина. Я думаю, вы обнаружите, что это широко используемый подход. Упомянутые вами проблемы с разрешениями и видимостью не затрагиваются этой организацией.

Выполнение этого способа упрощает развертывание - просто разверните войну плагинов, готово.

Если есть причины, не зависящие от вас, которые требуют, чтобы портлеты находились в отдельных надстройках, тогда это становится сложнее - подход yannicuLar является одним из способов.

person npskirk    schedule 15.05.2013

Если у вас есть два портлета, совместно использующие одни и те же таблицы / объекты, вы можете скопировать service.jar в tomcat-7.0.27 \ lib \ ext, общее место, где эти два портлета могут получить доступ к этому .jar во время выполнения.

person Mzr    schedule 16.05.2013