Liferay — Open-Source портал на J2EE

    Только вчера закончил свой первый, полнофункциональный портлет для Liferay (SVN/Mercurial/CVS браузер) — и хочу поделится некоторым опытом (пусть и минимальным). К тому же по Liferay вроде на Хабре еще ничего не пробегало. Статья очень поверхностная — но тем не менее, надеюсь, даст некоторое начальное представление

    image



    Что такое Liferay


    Если в двух словах — Liferay это портал выполенный на технолгиях J2EE (ок, получилось больше двух слов). Посмотреть можно на самом сайте www.liferay.com Так же, что бы было легче представить о чем речь — вот аналогичные продукты, но выполненные на других технологиях:

    Портал позволяет комбинировать различные модули в одном web-приложении (и на одной веб-странице). Говоря о Liferay — это
    • Полноценная CMS
    • Вики
    • Блоги
    • Форумы
    • В последней версии добавилась функциональность социальных сетей: друзья, «стена», сообщения
    • И много-много-много чего другого

    Плюс к этому, есть возможность разработки собственных модулей, именуемых портлетами (Portlet).
    Портлет — это компонент, выполняемый в контексте Portlet Container-а и отвечающий за отрисовку предоставленной ему области страницы (в отличие от отрисовки всей страницы в обычном servlet)

    Как и многие другие технологии в J2EE, API портлетов стандартизовано через JSR (Java Specification Request). За портлеты отвечают JSR-168 (Portlet 1.0) & JSR-268 (Portlet 2.0) а так же ряд других JSR (например JSR-301 — Portlet Bridge Specification for JavaServer Faces)

    Наличие стандартов позволяет разрабатывать портлеты, которые потом можно выполнять в любом портале. Кроме Liferay, существует целый ряд других Open-Source реализаций (не говоря о коммерческих):

    Но, по моему скромному мнению, Liferay самый мощный и полнофункциональный из них, не зря компания Sun выбрала именно Liferay за основу своего портала WebSpace.

    Стандарты / не стандарты


    Стандарты это хорошо! Это даже очень хорошо! Но, если брать конкретный пример (мой портлет) — то я принял решение разрабатывать портлет именно под Liferay — то есть, не работающий на других порталах. Почему? Ну во-первых, сильно сомневаюсь, мой портлет будет использоваться где-то еще кроме Liferay (если все-таки кто-то захочет — бужу делать общую версию), а заточка портлета именно под Liferay позволяет использовать большой набор дополнительных сервисов и заготовок.

    В мое случае мне очень пригодился тэг отрисовки таблиц: формируешь набор данных — и отображаешь его в виде таблицы при помощи этого тега — в результате получаешь таблицу, стилистически оформленную как и все другие таблицы в Liferay, с разбиением данных на «страницы» (pagination), навигацией между страницами, управление количеством элементов на одной странице. Так как таблица у меня присутсвует чуть-ли не на каждой форме — мне это было критично и использование Liferay-специфичной функциональности сильно облегчило мне жизнь

    Но, в каждом проекте, я думаю, это должно решаться индивидуально — при возможности — лучше следовать стандартам (и обеспечить переносимость) — но, если переносимость не нужна и решение создается под конкретный портал — можно и использовать специфичные сервисы и функциональность.

    Так же, Liferay был выбран из-за того, что набор технологий, используемый в нем и его портлетах, близок к моему EmForge — и я надеюсь в будующем получить более тесную интеграцию EmForge & Liferay:

    Разработка портлетов


    При разработке пользовательского интерфейса Portlet-ов для Liferay, можно использовать практически все фреймворки, что и при разработке обычного java веб-приложения:
    • Голый JSP — что я и выбрал пока, так как у меня только отображение данных
    • Struts 1.x — используется для написания «родных» портлетов, а потому имеет много «заготовок»
    • Struts 2 тоже должен работать
    • Spring-MVC

    Можно писать на JSF — но работать с голым JSF грустно, а из дополнительных framework-ов поддерживаются IceFaces и только вчера прошел анонс в форуме о поддержке RichFaces (но видимо в состоянии альфа)
    Другие фреймфорки должны работать, но — надо проверять (могут быть «нюансы»). Например мне никто так и не смог подтвердить — будет ли работать Wicket — или нет.

    Разработка портлетов по много схожа с разработкой обычных веб-приложений на java — структура проекта во многом та же, тот же web.xml — просто есть ряд дополнительных конфигурационных файлов, и вся программа выполяется немного в другом контексте — вместо Servet-ов и Filter-ов — Portlet-ы и PortletFilter-ы

    Трудности при разработке


    Основная трудность — очень мало документации :( — все что есть — это набор плохо-структурированных вики на liferay.com, плюс сообщения в форумах. Для меня лучшей документацией стал исходный код самого Liferay и его родных портлетов. Просто когда надо что-то сделать — ищешь портлет с похожей функциональностью, смотришь его исходный код и делаешь аналогично (благо — все в Open-Source и доступно)

    Где использовать


    Мне Liferay очень понравился — и, если вам необходимо написать CMS на java — подумайте — может не надо изобретать велосипед? Используя Liferay вы получаете сайт с управлением пользователями и ролями, множеством компонент и возможностью разширить его на java — и все это Open-Source и бесплатно.

    Комментарии 5

      0
      В свое время так же остановил свой выбор на этом портале. Порог вхождения в него достаточно низкий по сравнению с другими, очень дружественный интерфейс, достаточно простая разработка на начальных этапах. Но в итоге по политическим причинам портал не взяли в работу.
      За время пока разбирался перенес в него достаточно сложный jsp-скриптлет :) просто добавив к нему состояние рендеринга, данные для которого брались из сессии (ужос, но работало).

      ИМХО сложилось убеждение, что это практически единственный полноценный конкурент sharepoint-у.
        0
        Эммм а как же JBoss Portal? В свое время выбирал между JBoss'ом и Liferay, остановил свой выбор на JBoss Portal'е. Еще ни разу не пожалел. Хотя на данный момент коллеги разрабатывают на Liferay, хвалят.
          0
          IMHO Liferay — это Portlet Container + Themes + огромное количество готовых к использованию портлетов.

          Как мне показалось — разница именно в этом огромном количестве портлетов — если посмотреть тот же PortletSwap для JBoss Portal-а — выбор намного меньше.

          То есть — если нужен именно Portlet Container — то тут Jboss Portal может и лучше (тем что меньше «лишнего».

          Ну и еще пару камней в стороны JBoss Portal-а:
          * Тот же jboss.org перевели с JBoss Portal-а на Magnolia. А liferay.com используют свой же Liferay. Что-то видимо не устроило JBoss в своем же портале
          * Последний JBoss Portal 2.7.2 не работает на JBossAS 5.0 (а на дворе уже 5.1)

          Эти два «камня» просто говорят (для меня) о качестве саппорта и поддержки

          Плюс (относительный) который был для меня в Jboss Portal — что на нем жил RichFaces — но вроде и он уходит
        0
        как то мельком уже смотрел его, но после вашего описания посмотрю поглубже :)
        в плане опенсорсных cms на java alfresco еще довольно инетесный проект, но оно больше ecm

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое