Liferay-services

Liferay-services

Last modified by Jakub Jirůtka on 2013-05-10, 21:49

Motivace

Zavedení mechanismu pro sdílení služeb přes JavaCode na úrovni Liferay. Pěkným příkladem je aktuální způsob komunikace jednotlivých portletů s databází. Zde si každý portlet s sebou táhne vlastní JAR knihovnu, která vytvoří nové spojení do databáze atd. (první obrázek)

Po úspěšném zavedení mechanismu by komunikace měla vypadat jak naznačuje další obrázek. Portlety znají pouze rozhraní pro komunikaci se službou (knihovnou) a vlastní implementace služby je ve WAR souboru, který se deployuje na Liferay zvlášť. Pouze tato služba má spojení do databáze.

sspV1.png sspV2.png

Popis Implementace

Postup je inspirovaný starým Liferay přístupem k services. V mechanismu jsou zahrnuté 3 moduly:

  • klient – portlet, jež využívá službu
  • služba – WAR,jež obsahuje implementaci služby
  • interface – kontrakt služby

Modul interface

Obsahuje:

  • interface služby
  • třídu „Util“:
public class HelloWorldServiceUtil {
  private static HelloWorldService service;

  public static HelloWorldService getService() {
      return this.service;
  }

  public void setService(HelloWorldService service) {
      this.service = service;
  }
}

Užití:

  • JAR musí být nahrán do tomcat/lib/ext,
  • zbylé moduly jsou na něm závislé (provided v pom.xml), tudíž znají kontrakt.

Modul služba

Obsahuje:

  • implementaci služby
  • META-INF/portlet-spring.xml (vložení instance správné třídy do static field v „Util“):
<beans>
  <bean id="helloWorldService" class="HelloWorldServiceImpl"/>
  <bean class="HelloWorldServiceUtil">
      <property name="service" ref="helloWorldService"/>
  </bean>
</beans>
  • service.properties (zařídí načtení při deploy):
       spring.configs=WEB-INF/classes/META-INF/portlet-spring.xml

Užití:

  • WAR deploynout do Liferay

Modul klient

V implementaci používá třídu „Util“, která vrací instanci služby.

Tags: Liferay
Created by Aleš Fišer on 2013-05-05, 18:57

My Recent Modifications


This wiki is licensed under a Creative Commons BY-SA 3.0 license
XWiki Enterprise 5.4.1 - Documentation