¡Buenas!
Hoy os explico diferentes maneras de compartir la capa de servicios que hayáis creado con el service builder entre diferentes portlets.
Primero, tenemos que contar que tenéis un portlet base base-portlet, el cuál habéis creado entidades y servicios con el service builder. Si quisieramos que un segundo portlet y un hook, por ejemplo, accedieran a estos servicios, replicarlos para cada plugin sería ineficiente y causante d’errores de inconsistencia en el futuro.
La mejor opción siempre es que todos los plugin accedan a la misma capa:
Propondremos dos opciones:
- Crear los diferentes portlets y hooks en un mismo plugin.
- Compartir la capa de servicios a nivel de tomcat.
Crear los diferentes portlets y hooks en un mismo plugin
La idea es crear diferentes portlets en un mismo plugin de Liferay y tener unos servicios creados con el Service Builder. De esta manera, estos servicios seran disponibles y accesibles por cada portlet o hook dentro del plugin.
Compartir la capa de servicios a nivel de tomcat
Si la propuesta anterior no fuera posible, también podriamos exportar la capa de servicios mediante un archivo jar. Cuando ejecutas el service builder, este archivo se genera en: “your-portlet/docroot/WEB-INF/lib/your-portlet-service.jar”.
Este jar nos da acceso a los local service que hayas programado. Para que todos los plugin de tu instancia puedan usarlo este jar lo tienes que añadir en este directorio del servidor: “<<Liferay-tomcat>>tomcat-x.x.x/lib/ext”.
Recuerda, para cualquier actualización de los servicios, se tendrá que reemplazar el jar y, además, reiniciar el tomcat.
¡Espero que os haya ayudado!