develNotes

/*айтишные заметки*/

18.02.2013

JSF2: внедрение бина Spring в JSF managed bean.

Когда в JSF managed bean внедряется зависимость в виде другого managed bean - это указывается или с помощью аннотаций, или в файле managed-beans.xml. В JSF 2 рекомендуется использовать аннотации, и мне тоже кажется что это более удобный подход - отпадает небходимость в еще одном XML файле настроек, аннотации это наглядно - все сразу видно при просмотре исходного кода класса.
Теги: javaEE jsf     Далее

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 programming     Далее

22.12.2012

Java EE: Загрузка классов в Jboss Application Server 7.

Когда приложение Java EE запускается на сервере - происходит поиск и загрузка необходимых классов. Сторонние зависимости могут находится в JAR библиотеках, которые поставляются с программой; в библиотеках которые предоставляются сервером; а иногда - в других приложениях, запущенных на данном экземпляре сервера. Если приложение содержит множество зависимостей, есть вероятность столкнуться с разными неприятными ситуациями. Что будет, если сервер предоставляет библиотеку, а в это же время другая версия этой библиотеки присутствует в приложении? Можно убрать ее из приложения и перейти на версию, поставляемую с сервером. В принципе, если это не получится, можно убрать библиотеку с сервера и использовать свою версию. А если другим запускаемым программам нужна именно та версия, которая есть на сервере? Говоря в общем, если зависимостей много, одни и те же библиотеки доступны в разных местах (на сервере, в приложении, в другом приложении и т.п.), встречайте - JAR hell. Для того чтобы избавиться от подобных проблем при использовании Jboss AS 7, нужно понять каким образом организована загрузка классов и как можно с успехом манипулировать зависимостями приложения.
Теги: jboss javaEE java     Далее

04.11.2012

SAX и DOM парсинг в Java - примеры и различия подходов.

Если вам нужно загрузить данные из 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>
Теги: programming java     Далее

03.11.2012

JSF: как изменить значение свойства класса из JavaScript.

Как правило, в 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>
Теги: jaxb java programming xml     Далее