Pull to refresh

Comments 70

Замечу, что сайты-визитки на портлетах не делают. Более того, если вы не являетесь партнером или клиентом IBM — то портлеты тоже не для вас.
Чтобы использовать портлеты, вовсе необязательно быть связанным с IBM. Их сейчас используют в больших по количеству страниц и функционала приложениях. Существует достаточно реализации портлетов и у других компаний, например. Есть и свободные разработки.
Вы ошибаетесь. Релизация портлетов одна! Спецификация JSR-168 и недавно вышедшая JSR 286. Вот эту спеку должны поддерживать все порталы! JBoss, WebSphere, WebLogic… Это как сервлеты, не бывает разных реализаций.
Даже если я вас правильно понял, существуют альтернативные реализации java-библиотек — GNU Classpath, например. Не знаю, правда, добрались ли они до сервлетов с портлетами :-)

Ну а vinni, должно быть, имел(а) ввиду альтернативы IBM Web Sphere Portal 6.
Нет альтернатив насколько я знаю нет, да и зачем? Вы встречали альтернативы сервлетов? Несколько лет назад, когда портлеты только начали развиваться IBM решила пойти своим путем. Она разрабатывала свое API. Ничего хорошего из этого не вышло, проект закрыт. Вообще IBM сервер/портал очень тяжелый. Очень много нагорожено всего, половина апи с дырами, половина управляющих портлетов написано на деприкейтном API. Я бы посоветовал для начала попробовать свои силы с JBoss. Этот портал легче и деплоить проекты проще. А разницы в реализации портлетов нет практически никакой, только xml маппинг.
описываете историю 5ого портала, в 6ом все на много лучше, а еще 6.1 появился
Действительно, в 6 версии такого замечено не было, есть мелкие баги, но они правятся фикспаками, которые лежат на сайте IBM.
Ребята, PortletData в 6ом портале хранится в КУКИСАХ!!!
Это же пипец.
Это не мелкий баг, это кретинизм. Заключается он в том, что пользователь может настроить портлеты «под себя», но стоит ему зайти на портал из другого браузера, все настройки сбрасываются, т.к. кукисы остались в первом браузере.
Индусы жгут.

JSR-168, это прошлый век, я описывал работу с jsr-286 на контейнере портлетов.
Вы что-то путаете, какие куки? Все в базе.
Не могу найти доку, найду — скину ссылку. Коллеги потратили кучу времени, прежде чем выяснили, почему настройки портлета не сохраняются.
Спецификация одна, но ее реализаций много.
Так же, как и с сервлетами — существует много сервлет-контейнеров, реализующих одну и ту же спецификацию.
А кто говорит о сайтах визитках? А кто говорит, что не партнер IBM? Да и речь вообще не о том! Хотелось показать практический пример разработки портлета, так как столкнувшись с этим первый раз, у некоторых возникает множество вопросов. Я не говорю, что я тут осветил полную картину, но оттолкнуться есть от чего…
В ru_java недавно был спор о необходимости портлетов. Товарищи высказывались в том числе и о сомнительных достоинствах этой технологии при большом числе неудобств и минусов.

Я портлетами не занимаюсь, но почитать было интересно и об этой точке зрения.
Поверьте, хороший портал вкупе с функциональными портлетами предоставляют множество возможностей!
Я не спорю, я повторюсь, в портлетах не смыслю. Просто люди утверждали, что на основе более простых технологий можно получить такой-же результат с меньшими матюками и усилиями. Тут есть о чем подумать, мне кажется.
На основе портлетов можно писать приложения со сложной бизнес логикой. Плюс, однажды написав портлет вы его сможете развернуть на новом проекте за несколько минут. И не писать в очередной раз из проекта в проект.
в первую очередь, можно навариться на клиенте :) тут без вопросов
Опять минусы. За что?

>> А кто говорит о сайтах визитках? А кто говорит, что не партнер IBM? Да и речь вообще не о том!

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

Как правило, заказчики используют жесткие страницы и фиксировонные наборы портелтов на них, то есть урезают много полезного функционала.

Плюс в статье не написано, но есть мощный аппарат настройки безопасноти; каждый портелт может отображать разную информцию, в завивимости от того какой пользователь смотрит ее (к примеру имя пользователя, а может доп. функционал в зваисимости от роли юзера).

поддержка кластеризации, редхата, безнес процессов, лотус нотус (sic!) и т.д.
Помилуйте, не об этом тут речь! :)
я человеку про сферу примения технологии хотел показать, почти на примерах :) а надо оно или нет, пусть сам решает.
Тогда вопросов не имею :)
Вы выбрали самый неочевидный вариант: взяли устаревшую спецу и безумно дорогой портал, суть которого не работа на jsr-168, а по собственной IBM-реализации портлетов, которые, по сути, являются расширениями сервлетов. Именно из-а этого люди юзали IBMомвские порталы, но никак не из-за jsr-168
А кто-то запрещает использовать jsr-168 на портале от IBM? Да, и если вы заметите, речь тут изначально не о портале, а о портлетах.
Да, кто мешает писать веб-приложения на Ассемблере?
Именно из-за несовершенства jsr-168 у IBM'а появилась своя спецификация портлетов, устраняющая недодумки и недоработки 168ой.
Весной-летом, вышла в свет новая, 286ая спецификация, которая ни чем не уступает IBM'овской. И за нее не надо платить, чтобы юзать IBM спеку, вы отдадите за портал тысяч 100 вечнозеленых президентов, а 286ые портлеты заводятся на простеньком контейнере портлетов.

Нерационально платить 100.000 баксов за портал и юзать на нем 168ые портлеты.

Если вы пишите о способе раздувания бюджета, то это другое дело, но к Джаве не имеет никакого отношения.
ммм IBM спецификация изначально была хреновой и мало чем отличалась от JSR-168. Возьмите хотя бы пдф у IBM о разработке портлетов на JSR-168 и IBM спеке. Пол книги один в один, только методы и переменные называются по разному. Единственное за что нужно сказать спасибо, это возможность в PortletData сохранять объекты, а не String'и.
Это не единственное различие, и не самое главное.
Я говорю совсем о другом: почему бы не взять контейнер портлетов, установить его на GlassFish и юзать как 168ые, так и 286ые портлеты? И не надо никаких АйБиЭмов с корявыми и кривыми серверами.
Ой не дай бог вам столкнуться с WebSphere. :)
Не обязательно быть клиентов IBM. Есть решения у Sun, Microsoft и т.д…
Уже год работаю, хочется плакать, все криво, косо, никакой совместимости с оупенсорсными проектами.
До сих пор IBMовская реализация JPA не умеет делать order by по аггрегату, приходится jpql запросы переписывать на нативном SQL.
IBM нужен совсем для других целей…
Вам ставят минусы те, кто никогда плотно не работал с продуктами IBM.
Я студент специализированной группы IBM (есть у нас в институте такая). Часть занятий проходит в учебном центре IBM. УИРы проходят по различным технологиям IBM. Часть моих одногруппников занимается администрированием серверов, кто-то уже читает курсы, а есть бедолаги (я среди них) которые разрабатывают. Среди последних непрерывный спор, что хуже, кривей, менее дружелебно и т.д. — Lotus Notes или WebSphere.
Может это принесет вам немного облегчения: мы страдаем вместе с вами. :)
А что с WebSphere не то? Вы имеете ввиду IBM WebSphere Application Server 6? Уже месяцев 9 плотно с ней работаю, не могу сказать, что столкнулся с большим числом проблем. Были неприятности с JMX, но IBM Developer центр помог разобраться.
Хотел немного добавить, вы да и все кто только начинают писать портлеты упустили главную «фишку» — render Phase и action Phase. На мой взгляд это самое важное преимущество портлетов над другими web-приложениями.
Да, я в курсе, но всего этого не охватить в одной маленькой статье.
К слову сказать, такая вот «фишка» создаёт немало проблем. Последнее с чем столкнулся: портал ставит mime-type ответа с сервера как text/html. Поменять это из портлета никакой возможности нет (что вполне понятно, ведь ему нужно вызвать render-метод ВСЕХ портлетов на страничке). Поэтому если вы например хотите плюнуть в клиента файлом, придется писать отдельный сервлет или же использовать JSF.
Метод render вызывается у каждого портлета отдельно от других, а перед тем как рендерить, вы можете выствить нужный вам mime-type

response.setContentType("text/html")
Мда… действительно что-то я напутал. Тем не менее в инете проблему выгрузки файла из портлета решают через отдельный сервлет.
В 286ой спеке это все реализовано. Есть специальный метод serveResourse.
а для новичков можно хелло world?
UFO just landed and posted this here
да, нежно унаследовать GenericPortlet и замапить.
Спасибо, а продолжение будет? Очень интересно =)
А что бы вы хотели видеть в продолжении?
немного странно в jsp использовать JSTL для цикла, но не использовать для if.
это бы заметно повысило читабельность.
Согласен, может это и не так красиво, ну написал почему-то именно так :)
о да! такая крутая технология несомненно годна для написания rss агрегаторов.

P.S. когда вижу такой жабокод, мне почемуто жалко жабакодеров становится…
Вы знакомы с порлетами?
Кхм, а в чём разница между портлетами и сервлетами и чем портлеты лучше/хуже?
Портлеты задумывались как технология, предназначеная для реализации информационных порталов, которые содержат внутри себя некоторое количество разнообразных бизнес приложений. Т.е. на странице портала может быть несколько окон, в каждом из них располагается отдельное приложение, независимое от других. Если вы видели когда-нибудь iGoogle то концепция та-же, портлет-контейнер предоставляет единый способ управления окнами, а сами приложения уже могут выполнять конкретные функции, типа показа календаря или биржевых сводок.
Касательно ответа на вопрос — портлеты построены на базе сервлетов. Т.е. по сути — портлет контейнер это сервлет, который является враппером для вызова функций портлета. Сравнивать их неуместно, это просто надстройка над сервлетами.
Ого, спасибо! А то я не знал, юзаю всю жизнь сервлеты и тут на тебе — портлеты какие-то (:
Вот тут демка по WebSpere Portal, можете посмотреть и прикинуть различия :)
что-то мне не понравился portlet.xml, а именно перечисление mode-ов работы портлета.

в статье упущен life cycle портлета, а с этого нужно начинать.

сам портлет написан излишне сложно. чем не понравилось решение по использованию простых бинов? так MVC лучше видно. а тут все в одну кучу. и да, вроде у 6ого портала был свой rss-reader, чем он не угодил? :)

IBM WPS начиная с 6ой версии добротный инструмент, им просто нужно уметь пользоваться, настраивать etc. таких спецов очень мало, а те что есть на вес золота.
А что конкретно не понравилось? Моды как моды, единственное, что лишний config, изначально планировался именно он, но потом отказался от него и решил дать всем пользователям настраивать портлет.

<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
<portlet-mode>config</portlet-mode> < — оно не понравилось
<portlet-mode>help</portlet-mode>

<custom-portlet-mode>
<portlet-mode>config</portlet-mode>
</custom-portlet-mode>
</portlet-app>

но я, если честно, именно этой частью давно занимался и много уже не помню. Чисто инуитивно что-то тут не нравится. И портала под рукой нет :(
Ну скажу еще раз, что режим config — это кастомный режим и зависит от реализации портала, как правило этот режим доступен только администраторам портала, именно там изначально планировалась настройка портлета, а в дескрипторе оставил его для наглядности.
Идея всех этих портлетов конечно неплохая. Но реализация — не знаю как сейчас, но пару лет назад была полная туфта. Взаимодействие между портлетами кривое, море багов в имплементациях, везде приходится вставлять костыли.
На самом деле достаточно сложно представить себе серьезное приложение, с реальной необходимостью выполняться в качестве портлета. Все то же самое можно сделать на уровне приложения с меньшими трудозатратами. Если бы портлеты облегчали жизнь и можно было бы любое приложение выполнить в портлете не затрачивая на это усилий, это было бы ценно. Но на практике дело обстоит по другому, все это выливается в воспаленный геморройный узел самизнаетегде.
Страшно.
10 лет пишу WEB на JAVA и не использую ничего, кроме Servlets+Hibernate+XSLT
потому как заглянешь вот в такое — и страшно
когда вместо 2 строчек пишешь 25, зато «все современно»
Видимо вы отстали от поезда под названием Ынтерпрайз. Шутка.
просто всегда надо сопоставлять свои цели и свои возможности и выбирать технологию для программирования.
Этот пример не показателен, к сожалению.
Автор в первую очередь ошибся, выбрав старую спецификацию, затем ошибся во второй раз, выбрав IBM Portal. Уж если IBM, то надо говорить про их спецификацию. У нормальных людей, компаний нет денег на чудовищно дорогой портал IBM. Стоит заметить, что покупая портал, пользователь приобретает кучу-тучу приблуд, которые совсем не нужны для того, чтобы запускать портлеты.

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

Кстати, 6.1 умеет обновлять портлеты асинхронно, так же можно асинхронно отправлять и получать сообщения.

В общем, у вас написано много и ни о чем.
Найти коды-примеры для jsr-168 это не такая уж большая проблема.

В жизни ничего более тормозного чем Websphere Portal не видел,
а среда разработки, так называемый RAD под неё вааще мега-монстр, для работы хоть как нибудь ему надо 2 Гига оперативки!!!
Аналогично, RAD — это чудовище, как и все остальное, что делает IBM руками индусов.
Sign up to leave a comment.

Articles