четверг, 17 июля 2014 г.

Confirmation dialog в RichFaces 4

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

Собравшись изучать JSF (разумеется версию 2.x), я выбрал достаточно суровую, на мой взгляд, библиотеку компонентов - RichFaces (последней стабильной версией на тот момент была 4.3.4.Final, в исходниках же к статье используется версия 4.3.7.Final - принципиальных различий нет) - и через недолгое время знакомства с ней столкнулся с элементарной, казалось бы, проблемой: по щелчку на кнопке/ссылке показать пользователю модальный диалог с каким-нибудь вопросом "Do you really want to do something?", а также парой кнопок OK и Cancel. В принципе, для такого простого случая взаимодействия с пользователем можно было бы обойтись и JavaScript-функцией confirm, но что если заказчику или вам самим захочется чего-то особенного. К примеру, чтобы окно диалога было выполнено в определённом стиле. В общем, стандартного компонента в RichFaces для этой цели нет, а в интернетах предлагается решение на основе JavaScript, отображающего скрытый модальный диалог. Но мне больше понравился подход PrimeFaces. В этой библиотеке есть готовый компонент confirmDialog. Взгляните на демку, чтобы ознакомиться с его работой. Принцип действия схож с решениями для RichFaces, однако выглядит всё более целостно и возможно такой подход поможет немного снизить степень гремучести смеси "html/el/javascript и еще черт знает чего" ©, из которой состоят представления в JSF. Ниже приведено краткое руководство по созданию в RichFaces аналога компонента confirmDialog (тут исходники).

воскресенье, 28 июля 2013 г.

Изменение используемого GlassFish 3 JDK

Однажды поздним вечером я собрался протестировать работу небольшого web-приложения, развернув его в GlassFish 3. Приложение это, к слову, требовало для работы Java 7. Ничего не предвещало беды, поскольку минутой ранее те же самые тесты успешно завершились в окружении JBoss AS 7. Однако, к моему удивлению GlassFish отказался сотрудничать, сославшись на несоответствие версий классов приложения. Недолгие поиски в интернете привели меня к решению проблемы: как оказалось, GlassFish при установке жёстко прописывает в своей конфигурации используемый на тот момент JDK, а у меня тогда была популярна 6-я версия. Остаётся только явно указать серверу путь к новому JDK, отредактировав в файле glassfish3/glassfish/config/asenv.conf (или asenv.bat в случае Windows) параметр AS_JAVA.

воскресенье, 2 июня 2013 г.

Регистрация поставщика драйвера базы данных в GlassFish 3

При создании нового пула соединений через веб-интерфейс консоли администрирования GlassFish  на первом шаге нам предлагают выбрать из выпадающего списка соответствующего поставщика драйвера базы данных (Database Driver Vendor). Действие это необязательное и всего лишь в дальнейшем избавит нас от указания вручную реализации выбранного типа ресурса, но тем не менее, порой бывает обидно не найти нужного поставщика среди предопределённых. Это легко исправить. Давайте поддержим сразу две СУБД - Firebird и H2.

суббота, 20 апреля 2013 г.

Кэширование Integer

Как известно, целочисленные значения в Java кэшируются в диапазоне от -128 до 127. Для Integer этот диапазон можно изменить при помощи системного свойства java.lang.Integer.IntegerCache.high.

Как можно понять из названия этого свойства, оно задаёт верхнюю планку кэшируемых значений. Собравшись изменить размер кэша, помните, что вернюю планку не получится опустить ниже заданного по умолчанию минимального уровня, а также установить размер кэша больший, чем Integer.MAX_VALUE.

Эффекта, аналогичного полученному от использования свойства java.lang.Integer.IntegerCache.high, можно также достичь при помощи параметра виртуальной машины -XX:AutoBoxCacheMax=<size>.

пятница, 19 апреля 2013 г.

Если IntelliJ IDEA не видит M2_HOME

Работая в IntelliJ IDEA под Linux столкнулся с одним неприятным моментом: среда разработки упорно отказывалась видеть переменную окружения M2_HOME, объявленную в файле .bashrc. Приходилось каждый раз при создании нового проекта указывать эту переменную вручную. Наконец мне надоело мириться с этим произволом со стороны ОС и IDEA и я отправился искать решение проблемы в интернетах. Нашёл его на баг-трекере JetBrains: оказывается для учёта переменных окружения из .bashrc следует запускать среду разработки не напрямую, а с помощью команды
bash -i <path_to_idea_folder>/bin/idea.sh

суббота, 23 марта 2013 г.

Настройка аутентификации на основе JAAS в TomEE

Третья и заключительная заметка, в которой мы коснёмся ещё одного достаточно популярного сервера приложений - Apache TomEE (для целей заметки использовалась версия 1.5.1 Plus). На всякий случай вот ссылки на первые две заметки: эта о GlassFish 3, а эта о JBoss AS 7.

среда, 13 марта 2013 г.

Настройка аутентификации на основе JAAS в JBoss AS 7

В предыдущей заметке мы рассмотрели процесс настройки сервера GlassFish 3 для выполнения аутентификации пользователей в web-приложении. Настало время сделать то же самое в JBoss AS 7.