Child pages
  • Portlet fejlesztes
Skip to end of metadata
Go to start of metadata

Portlet fejlesztés

Egy portlet fejlesztése (jelenleg) nagyjából az alábbi fájlokat érintve történik (mintaképp a News portlet):

Projektek és fáljlok
JavaForum2.0-web:
hu.javaforum.portlets.NewsPortlet.java
hu.javaforum.portlets.NewsPortlet.properties
web.xml
designs/javaforum/threeColumn/center/news/edit.jsp
designs/javaforum/threeColumn/center/news/help.jsp
designs/javaforum/threeColumn/center/news/view.jsp
designless/news/rss.jsp

JavaForum2.0-interfaces:
hu.javaforum.entities.portlets.News.java
hu.javaforum.entities.portlets.NewsComment.java
hu.javaforum.entities.portlets.NewsLabel.java
hu.javaforum.services.portlets.NewsPortletServiceLocal.java

JavaForum2.0-ejb:
hu.javaforum.services.portlets.NewsPortletServiceBean.java

Nos, egy portlethez - ha kell külön adatbázis, akkor azt entitás osztály formájában az interfaces projektben hozzuk létre, a portlet nevével kb. azonosan. Ha több tábla is van, akkor a táblák a portlet nevével kezdődnek, a közöttük való kapcsolatot az entitás osztályok írják le.

Az EJB háttér az entitás osztályokat használja adatok tárolására és transfer object-ként is. Nagyjából talál látni a fejlesztési konvenciókat az EJB projektben, van PerfLogger, amivel láthatóvá tehetjük egy-egy modul futási idejét, és direkt SQL nincs, hanem helyette JPQL, ami majdnem SQL, de objektumokat kell benne kezelni. Könnyen megtanulható, aztán majd furcsa lesz az SQL... (smile)

Az web projekt csak az interfaces projektet látja, és ha kell egy EJB funkcionalitás, akkor kér egyet (NewsPortlet.java). A portletek olyanok, mint a szervletek: egy példány van belőlük a portlet konténerben, és szálbiztosan kell futniuk, vagyis metódus szinten csak lokális változókat használhatnak közvetlenül. Kerüljük a synchronized használatát, felesleges.

A fejlesztés MVC szerint történik, a Model az EJB háttér, a Control a portlet forrása, a View pedig a JSP. JSP-be nem teszünk forráskódot. Az eseményeket a portlet doView/doHelp/doEdit/processAction metódusai kezelik, amelyek minden szükséges információt megkapnak a portlet konténertől. Minden portlet csak a saját kis világával törődik, a többi portlettel nem.

A portlethet tartozik egy nyelvi fájl, amely a többnyelvűséget hordozza, ez jelenleg bedrótozott a JSP-be, de alapvetően majd injektálni kell XML konfig alapján.

A web.xml végén van egy bypass rész, ahol a Local interfészt delegáljuk a JNDI fába a java:comp/env/ alá.

Nos, szerintem a portlet fejlesztés komplex feladat, van egy csomó lehetőség portlet fejlesztésre. Például Blog portlet, Wiki portlet, EventCalendar portlet, stb. portlet.

A portál motor nem teljesen JSR-168 kompatibilis még, ezért lehetnek eltérések, valódi JSR-168 kompatibilis portletet nem biztos, hogy meg tud hajtani.

Admin portál hiányában a portletet bele kell venni az adatbázis portlet táblájába, majd egy portlet_instance táblába (news portlet alapján), illetve a pis2ppgs táblába bele kell venni, hogy az X portlet példány (portlet_instance) melyik oldal melyik portlet csoportjába
(page_portlet_group) kerüljön. Ezt majd megoldja az admin portál a későbbiekben, egyelőre kézzel kell heggeszteni...

<< Vissza

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels