Когда в JSF managed bean внедряется зависимость в виде другого managed bean - это указывается или с помощью аннотаций, или в файле
managed-beans.xml. В JSF 2 рекомендуется использовать аннотации, и мне тоже кажется что это более удобный подход - отпадает небходимость в еще одном XML файле настроек, аннотации это наглядно - все сразу видно при просмотре исходного кода класса.
develNotes
/*айтишные заметки*/
12.01.2013
Конвертация PDF в HTML на Java.
PDF может и хороший формат, но согласитесь - зачастую просматривать его оналйн менее удобно, чем просто веб-страницу. Когда мне потребовалось сделать автоматическую конвертацию имеющихся PDF файлов в HTML, первое что я нашел вот этот конвертер -
pdfonline. Вполне неплохо работает и есть API для разных языков ( C#, VB, ASP, C+). Однако Java API там нет. Для Java, я нашел отличную библиотеку -
PDF2HTML5. Она не бесплатная, но есть 30-дневный триальный период. Для того чтобы сконвертировать PDF файл в веб-страницы можно воспользоваться приведенным на сайте примером, а это буквально одна строка кода. Здесь первый аргумент является входным PDF файлом, второй - путь к директории, куда будет сохранен результат (HTML файлы помещаются в директорию, название которой совпадает с названием входного PDF файла без расширения):
Когда приложение Java EE запускается на сервере - происходит поиск и загрузка необходимых классов. Сторонние зависимости могут находится в JAR библиотеках, которые поставляются с программой; в библиотеках которые предоставляются сервером; а иногда - в других приложениях, запущенных на данном экземпляре сервера. Если приложение содержит множество зависимостей, есть вероятность столкнуться с разными неприятными ситуациями. Что будет, если сервер предоставляет библиотеку, а в это же время другая версия этой библиотеки присутствует в приложении? Можно убрать ее из приложения и перейти на версию, поставляемую с сервером. В принципе, если это не получится, можно убрать библиотеку с сервера и использовать свою версию. А если другим запускаемым программам нужна именно та версия, которая есть на сервере? Говоря в общем, если зависимостей много, одни и те же библиотеки доступны в разных местах (на сервере, в приложении, в другом приложении и т.п.), встречайте -
JAR hell. Для того чтобы избавиться от подобных проблем при использовании Jboss AS 7, нужно понять каким образом организована загрузка классов и как можно с успехом манипулировать зависимостями приложения.
Если вам нужно загрузить данные из XML документа в java объект - можно использовать разные способы связывания данных, один из них - JAXB, я уже неоднократно упоминал. Подобные варианты подходят, если заранее известен формат исходного XML документа. А если вам необходим парсинг XML произвольного формата, то здесь можно использовать SAX или DOM парсеры. Эти парсеры аналогичны по функциональности, различаются подходы - DOM парсер сначала загружает весь исходный документ в java объект, с которым затем можно работать; SAX парсер использует событийную модель разбора документа, парсинг происходит "на лету" и загружать в память сразу весь XML нет необходимости. Давайте посмотрим на конкретные примеры использования таких парсеров. Итак, вот наш документ для разбора:
<test-object> <items type="available browsers"> <item> Firefox </item> <item> Opera </item> <item> IE </item> <item> Chrome </item> </items> <use-browser version="12"> Opera </use-browser> </test-object>
Как правило, в
JSF с каждым представлением (страницей) связан java класс (managed bean) веб-приложения, свойства которого связаны с компонентами JSF страницы - кнопками, полями ввода и пр. Веб-приложение на java выполняется на сервере приложений, но в тонкости отправки запросов от клиента к серверу вникать нет необходимости. Допустим, что нужно вызвать произвольную javascript функцию и из нее установить значение некоторого свойства класса. Вполне возможная ситуация, например когда какая-то часть интерфейса реализована на непосредственно на javascript, без использования JSF.
23.09.2012
Автоматизация маппинга XML - Java.
Я уже
упоминал об одном из способов связывания Java классов с их XML представлением - JAXB. Если стоит задача создания структуры Java классов для преобразования данных из XML документа заданного формата с помощью JAXB, то для этого обычно используется утилита
jaxb-xjc (Java Architecture for XML Binding Binding Compiler): достаточно иметь XSD файл со схемой документа, чтобы сгенерировать структуру классов. А что если схемы нет, а есть только пример самого XML документа? Конечно, ничто не мешает создать классы для JAXB вручную, но если исходные XML данные сложны по структуре и велики по объему - то зачастую это может оказаться лишней тратой времени. С помощью утилиты
trang можно создать схему на основе примера XML. Допустим есть такой XML файл и нам нужно создать соответствующие ему Java классы для JAXB:
example.xml:
<data type="dictionaries"> <dictionary name="buildings"> <itemnum>2</itemnum> <comment>Buildings</comment> <element> <id>0</id> <name>building 1</name> <cost>10000.50</cost> </element> <element> <id>1</id> <name>building 2</name> <cost>20000.50</cost> </element> </dictionary> </data>