The Best Portlet

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    The Best Portlet - Presentation Transcript

    1. Портлет-контейнер JSR-168, JSR-286, WSRP Alexey Zavizionov
    2. Servlet/JSP HTML страницы Интегрирование веб-сервисов Эволюция сайтов. 1 3 2
    3. Пользователю нужна иформация от разных источников. Представленная в едином и настраиваемом интерфейсе.
    4. От простого сайта...
    5. до WebOS портала.
    6. ...и разных систем управления сайтами*? СКОЛЬКО ссылок в интернете ...? * CMS – content management system Многообразие.
    7. Тысячи разных CMS систем Один триллион уникальных ссылок в индексе Google* Десятки Java порталов Результат эволюции. * 25.07.2008 1 3 2
    8. Основная проблема ? Выбираем портал.
    9. 1998 – 2002 У каждого портала свой API. Что же дальше?
    10. JSR-168 JCP cтандарт первой портлетной спецификации. Jan. 2002 – 27 Oct. 2003
    11. Expert group of JSR-168 * * сокращенный список
    12. Определения Портлет контейнер - содержит портлеты и управляет их жизненным циклом Портлет - приложение, которое предоставляет определенную часть контента Портал - веб приложение для предоставления персонализации, аутентификации и контент агрегации 1 3 2
    13. Аутентификация Агрегация Персонализация Описание Portlet 1. 1 3 2 Кастомизация 4
    14. Динамические ресурсы AJAX Взаимодействие портлетов Q: Что ещё не хватает? 1 2
    15. JSR-286 JCP cтандарт второй портлетной спецификации. Nov. 2005 – 12 Jun. 2008
    16. Expert group of JSR-286 * * сокращенный список
    17. События Взаимодействие портлетов * Публичные параметры Описание Portlet 2. 1 3 2 Сессии 4 Ресурсы 5 * IPC - inter portlet communication Фильтры 6
    18. eXo Portlet Container
    19. Концепция
    20. Портлеты и сервлеты Отличия Сходства Экстра функциональность 1 3 2 P&S : Portlets and Servlets
    21. P&S: Сходства Портлеты - java технология, базирующаяся на веб компонентах. Портлетами и их жизненным циклом управляет специальный контейнер. Портлеты производят динамический контент. Взаимодействуют с веб клиентами через парадигму запрос/ответ.
    22. P&S: Отличия Только часть разметки. Вызываются через URLs сконструированные portlet API. Взаимодействие через портал. Обработка: action, event, render и resource. Предопределенные portlet mode и window state. Несколько на одной странице.
    23. P&S: Экстра функциональность Портлеты могут сохрнять persistent configuration. Портлеты имеют доступ к user profile. Могут сохранять временную информацию в двух областях видимости: application-wide scope и portlet private scope. Могут отправлять и получать события (events).
    24. Архитектура
    25. Архитектура
    26. Конфигурация: portlet.xml Минимальная конфигурация портлетного приложения. <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> < portlet-app xmlns=&quot; http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd &quot; xmlns:xsi=&quot; http://www.w3.org/2001/XMLSchema-instance &quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd&quot; version=&quot;1.0&quot;> < portlet > < portlet-name >HelloWorldPortlet</portlet-name> < portlet-class > org.exoplatform.HelloWorldPortlet </portlet-class> < supports > < mime-type >text/html</mime-type> </supports> </portlet> </portlet-app>
    27. Конфигурация: web.xml <listener> <listener-class> org.exoplatform.services.portletcontainer.impl.servlet. PortletApplicationListener </listener-class> </listener> <servlet> <servlet-name>PortletWrapper</servlet-name> <servlet-class> org.exoplatform.services.portletcontainer.impl.servlet . ServletWrapper </servlet-class> </servlet> <servlet-mapping> <servlet-name>PortletWrapper</servlet-name> <url-pattern> /PortletWrapper </url-pattern> </servlet-mapping>
    28. Жизненный цикл processAction()‏ init()‏ processEvent() * 1 3 2 render()‏ 4 serveResource() * 5 destroy()‏ 6 * в JSR-286
    29. Портлет API PortletRequest GenericPortlet PortletResponse 1 3 2
    30. API: GenericPortlet
    31. API: PortletRequest
    32. API: PortletResponse
    33. Архитектура взаимодействия Event Action Resource 1 3 2
    34. Process ACTION
    35. Process EVENT
    36. Serve RESOURCE
    37. Попробуем в действии Event пример. Action пример. Render пример.
    38. Пример: Render public class HelloWorldPortlet extends GenericPortlet { public void doView (RenderRequest renderRequest, RenderResponse renderResponse)‏ throws PortletException, IOException { renderResponse.setContentType(&quot;text/html; charset=UTF-8&quot;); PrintWriter w = renderResponse.getWriter(); w.println(&quot;Hello, World!&quot;); } }
    39. Пример: Action public class HelloWorldPortlet extends GenericPortlet { public void processAction (ActionRequest actionRequest, ActionResponse actionResponse)‏ throws PortletException, IOException { actionRequest.setAttribute(&quot;test_attribute&quot;, &quot;test&quot;); actionResponse.setRenderParameter(&quot;test_render_param&quot;, &quot;168&quot;); } }
    40. Пример: Event public void processAction (ActionRequest actionRequest, ActionResponse actionResponse)‏ throws PortletException, IOException { MyEventPub sampleAddress = new MyEventPub(); sampleAddress.setStreet(&quot;myStreet&quot;); sampleAddress.setCity(&quot;myCity&quot;); actionResponse.setEvent (new QName(&quot;MyEventPub&quot;), sampleAddress); } public void processEvent (EventRequest req, EventResponse resp)‏ throws PortletException, IOException { Event event = req.getEvent() ; MyEventPub sampleAddress = (MyEventPub) event.getValue(); resp.setPortletMode(PortletMode.EDIT); } }
    41. Пример: Resource public void serveResource (ResourceRequest request, ResourceResponse response) throws PortletException, IOException { String goal = request.getParameter(&quot;goal&quot;); if (goal != null && goal.equals(&quot;image&quot;)) { response.setContentType(&quot; image/jpeg &quot;); Graphics2D graphics; OutputStream stream = response.getPortletOutputStream() ; JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(stream); BufferedImage bi = new BufferedImage(...); ... encoder.encode(bi); } else { response.setContentType(&quot; text/html ; charset=utf-8&quot;); PrintWriter w = response.getWriter() ; w.println(&quot;Here's the markup in serveResource&quot;); } }
    42. Пример: Dispatcher private static final String VIEW_PAGE = &quot;/WEB-INF/jsp/view.jsp&quot;; public void doView (RenderRequest request, RenderResponse response)‏ throws PortletException, IOException { response.setContentType(&quot;text/html&quot;); getPortletContext (). getRequestDispatcher (VIEW_PAGE). include (request, response); }
    43. Пример: Taglib <%@taglib uri=&quot;http://java.sun.com/portlet_2_0&quot; prefix=&quot;portlet&quot;%> < portlet:defineObjects /> <br/> < portlet:renderURL var=&quot;renderURL&quot;/> <br/> Link to render: <a href=&quot;<%=renderURL %>&quot;>here</a> WindowState is <br/> <%= renderRequest.getWindowState() .toString()%> <br/> PortletMode is <br/> <%= renderRequest.getPortletMode() .toString()%> <br/>
    44. Пример: Preferences ---portlet.xml------------------------------------------------------------------------------- < portlet-preferences > <preference> <name>message</name> <value>Defaut message</value> <read-only>false</read-only> </preference> </portlet-preferences> ---PreferencesPortlet.java--------------------------------------------------------------- PortletPreferences prefs = actionRequest.getPreferences() ; prefs.setValue(&quot;message&quot;, &quot;My New Message&quot;); prefs.store(); ... String message = prefs.getValue(&quot;message&quot;, “&quot;); -------------------------------------------------------------------------------------------------
    45. Пример: Session portletRequest.getPortletSession(); setAttribute(name, value, PortletSession.APPLICATION_SCOPE); setAttribute(name, value, PortletSession.PORTLET_SCOPE);
    46. Пример: Public parameters <portlet-app ... version=&quot;2.0&quot;> <portlet> <description xml:lang=&quot;EN&quot;>PublicParameterPortlet</description> <portlet-name>PublicParamterPortlet</portlet-name> ... < supported-public-render-parameter > country </supported-public-render-parameter> </portlet> < public-render-parameter > <identifier>country</identifier> <name>country</name> </public-render-parameter> </portlet-app>
    47. Пример: Cache Expiration ... <expiration-cache>10</expiration-cache> ... Validation response.getCacheControl().setETag(someID);
    48. WSRP WSRP - удаленные портлеты
    49. Итог
    50. Ресурсы www.exoplatform.com Документация wiki.exoplatform.org Просмотр исходников fisheye.exoplatform.org Блог blog.exoplatform.org jira.exoplatform.org builder.exoplatform.org
    SlideShare Zeitgeist 2009

    + Alexey ZavizionovAlexey Zavizionov Nominate

    custom

    742 views, 1 favs, 2 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 742
      • 723 on SlideShare
      • 19 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds
    • 17 views on http://zavizionov.blogspot.com
    • 2 views on http://static.slidesharecdn.com

    more

    All embeds
    • 17 views on http://zavizionov.blogspot.com
    • 2 views on http://static.slidesharecdn.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories