Недавно я начал разбираться с новой для себя библиотекой - Spring Web Services. Скачал версию 2.1.0.
Оказалось, что эта версия не работает со Spring 2.5. Из недостатков дистрибутива можно отметить отсутствие javadoc. Однако после поисков мне удалось найти архив с javadoc по пути: http://repo1.maven.org/maven2/org/springframework/ws/spring-ws-core/2.1.0.RELEASE/spring-ws-core-2.1.0.RELEASE-javadoc.jar.
Также к недостатку можно отнести то, что при определённых условиях spring ws зависит от http client 3.1.1. Хотя http client уже давно имеет более свежую версию. Для меня было открытием, что spring ws не имеет встроенной возможности установить таймаут на ожидание обработки запроса в веб-сервис. Именно поэтому используется http client.
Что касается написания клиента, то здесь Spring ws предоставляет гибкие возможности. Например, можно посылать xml запросы в виде строк напрямую в сервис, а можно заставить spring ws самому заниматься преобразованием объектов в запросы и обратно. Мне, к сожалению, пришлось выбрать вариант работы с xml через строки, так как веб-сервис, с которым приходится работать, плохо документирован и определён. Поэтому часто приходится делать доработки клиента.
Подписывание xml также происходит довольно легко и быстро. Не надо тратить время на написание кода - всё можно сделать через файл конфигурации Spring. Пример постараюсь выложить позже.
Несмотря на то, что новичкам будет непросто сходу разобраться в этой библиотеке, я бы рекомендовал потратить время на её освоение.
This blog is a collection of minds around linux, java, javascript, etc. Looking for great opportunities.
среда, 4 июля 2012 г.
суббота, 30 июня 2012 г.
Установка tomcat6 на linux mint 13
Установить пакеты:
tomcat6-user
libtomcat6-java
tomcat6-common
tomcat6-admin
tomcat6-docs
Далее вызываем man tomcat6-instance-create и внимательно изучаем то, что нам предлагается.
Эта команда позволяет нам создать свой экземпляр Tomcat. Формат команды tomcat6-instance-create опции имя_каталога.
Каталог не должен существовать. Он будет создан автоматически.
В качестве опций нам предлагаются следующие:
-p HTTPPORT - порт, на котором будет жить наш экземпляр tomcat. По умолчанию 8080.
-c CONTROLPORT - порт, по которому можно будет остановить tomcat. По умолчанию 8005.
-w MAGICWORD - магическое слово, которое необходимо послать на CONTROLPORT для останова сервиса. По умолчанию SHUTDOWN.
Создадим экземпляр с помощью команды tomcat6-instance-create ~/tomcatinst1.
You are about to create a Tomcat instance in directory '/home/duglas/tomcatint1'
* New Tomcat instance created in /home/duglas/tomcatint1
* You might want to edit default configuration in /home/duglas/tomcatint1/conf
* Run /home/duglas/tomcatint1/bin/startup.sh to start your Tomcat instance
Теперь у нас есть свой экземпляр tomcat, с которым можно работать.
Открываем файл cont/tomcat-users.xml и добавляем строчки
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="admin" password="admin" roles="tomcat,manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
Переходим в каталог bin и запускаем tomcat ./startup.sh:
Using CATALINA_BASE: /home/duglas/tomcatint1
Using CATALINA_HOME: /usr/share/tomcat6
Using CATALINA_TMPDIR: /home/duglas/tomcatint1/temp
Using JRE_HOME: /usr/lib/jvm/java-6-openjdk
Using CLASSPATH: /usr/share/tomcat6/bin/bootstrap.jar
Tomcat started
Набрав в строке браузера http://localhost:8080, откроется пустая страница.
Пакет с документацией ставится в каталог /usr/share/tomcat6-docs/docs.
Приложение для развёртывания приложений находится в каталоге /usr/share/tomcat6-admin.
Для того, чтобы это приложение заработало, необходимо скопировать каталог tomcat6-admin в каталог webapps нашего экземпляра Tomcat и перезапустить Tomcat. Далее, это приложение будет доступно по адресу http://localhost:8080/manager/html.
tomcat6-user
libtomcat6-java
tomcat6-common
tomcat6-admin
tomcat6-docs
Далее вызываем man tomcat6-instance-create и внимательно изучаем то, что нам предлагается.
Эта команда позволяет нам создать свой экземпляр Tomcat. Формат команды tomcat6-instance-create опции имя_каталога.
Каталог не должен существовать. Он будет создан автоматически.
В качестве опций нам предлагаются следующие:
-p HTTPPORT - порт, на котором будет жить наш экземпляр tomcat. По умолчанию 8080.
-c CONTROLPORT - порт, по которому можно будет остановить tomcat. По умолчанию 8005.
-w MAGICWORD - магическое слово, которое необходимо послать на CONTROLPORT для останова сервиса. По умолчанию SHUTDOWN.
Создадим экземпляр с помощью команды tomcat6-instance-create ~/tomcatinst1.
You are about to create a Tomcat instance in directory '/home/duglas/tomcatint1'
* New Tomcat instance created in /home/duglas/tomcatint1
* You might want to edit default configuration in /home/duglas/tomcatint1/conf
* Run /home/duglas/tomcatint1/bin/startup.sh to start your Tomcat instance
Теперь у нас есть свой экземпляр tomcat, с которым можно работать.
Открываем файл cont/tomcat-users.xml и добавляем строчки
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="admin" password="admin" roles="tomcat,manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
Переходим в каталог bin и запускаем tomcat ./startup.sh:
Using CATALINA_BASE: /home/duglas/tomcatint1
Using CATALINA_HOME: /usr/share/tomcat6
Using CATALINA_TMPDIR: /home/duglas/tomcatint1/temp
Using JRE_HOME: /usr/lib/jvm/java-6-openjdk
Using CLASSPATH: /usr/share/tomcat6/bin/bootstrap.jar
Tomcat started
Набрав в строке браузера http://localhost:8080, откроется пустая страница.
Пакет с документацией ставится в каталог /usr/share/tomcat6-docs/docs.
Приложение для развёртывания приложений находится в каталоге /usr/share/tomcat6-admin.
Для того, чтобы это приложение заработало, необходимо скопировать каталог tomcat6-admin в каталог webapps нашего экземпляра Tomcat и перезапустить Tomcat. Далее, это приложение будет доступно по адресу http://localhost:8080/manager/html.
среда, 27 июня 2012 г.
Apache CXF. Ошибка Property is already defined. Use to resolve this conflict.
При попытке сгенерировать java клиента с помошью WSDL2JAVA Apache CXF выдал ошибку Property is already defined. Use <jaxb:property> to resolve this conflict.
Проблема оказалась в том, что атрибут и элемент имеют одинаковые имена. Вот такой бред выдаёт JAXB. Что с этим делать? Нужно создать файлик xml, в котором необходимо определить, что дубликат имени будет отображаться на другое имя. Например, так:
Проблема оказалась в том, что атрибут и элемент имеют одинаковые имена. Вот такой бред выдаёт JAXB. Что с этим делать? Нужно создать файлик xml, в котором необходимо определить, что дубликат имени будет отображаться на другое имя. Например, так:
<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="Dummy.xml" node="/xsd:schema">
<jxb:bindings node="//xsd:complexType[@name='complexTypeOne']">
<jxb:bindings node=".//xsd:attribute[@name='value']">
<jxb:property name="ValueToFixError1"/>
</jxb:bindings>
</jxb:bindings></jxb:bindings></jxb:bindings> После этого необходимо WSDL2JAVA с помощью ключа -b указать созданный файлик.
среда, 20 июня 2012 г.
Ubuntu 12.04 LTS и классический Gnome
У кого как, а Unity в Ubuntu вызывает у меня рвотный рефлекс. Он более подходит для планшеток и развлечений чем для работы. Потому я хочу видеть привычный мне интерфейс Gnome.
Что делать? Открываем Ubuntu Software Center. Ставим пакет gnome shell, далее выходим из сеанса и перед заходом выбираем Gnome. Наконец-таки я в родном окружении.
Кстати, до обновления, у меня стояла версия 10.04. После обновления мне пришлось почистить скрытые каталоги своей домашней директории, чтобы Gnome смог корректно отобразиться.
Что ещё не понравилось, так это то, что пришлось доставлять дрова NVidia. Без них экран входа в систему отображался некорректно.
Теперь сижу и думаю, для чего обновлял машину, если ранее всё работало.
Что делать? Открываем Ubuntu Software Center. Ставим пакет gnome shell, далее выходим из сеанса и перед заходом выбираем Gnome. Наконец-таки я в родном окружении.
Кстати, до обновления, у меня стояла версия 10.04. После обновления мне пришлось почистить скрытые каталоги своей домашней директории, чтобы Gnome смог корректно отобразиться.
Что ещё не понравилось, так это то, что пришлось доставлять дрова NVidia. Без них экран входа в систему отображался некорректно.
Теперь сижу и думаю, для чего обновлял машину, если ранее всё работало.
воскресенье, 10 июня 2012 г.
Firefox 13 и страница наиболее посещяемых сайтов
Обновился до Firefox 13.
Теперь при открытии новой вкладки выводится галерея из 9 наиболее посещаемых сайтов!
За мной следят?
Как отключить:
1) во вкладке в правом верхнем углу есть значок матрицы. Щёлкаем на него, и галерея исчезает.
2) в браузере набираем about:config, ищем свойство browser.newtabpage.enabled, меняем его на false и перезагружаем браузер.
Теперь при открытии новой вкладки выводится галерея из 9 наиболее посещаемых сайтов!
За мной следят?
Как отключить:
1) во вкладке в правом верхнем углу есть значок матрицы. Щёлкаем на него, и галерея исчезает.
2) в браузере набираем about:config, ищем свойство browser.newtabpage.enabled, меняем его на false и перезагружаем браузер.
Mysql 5.5.22. Проблема с utf8
Установил в Linux Mint 13 Mysql 5.5.22. Из коробки субд настроена на кодировку latin1. Из-за этого работать с русским языком невозможно. Чтобы установить кодировку utf8, необходимо сделать следующее:
1) vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
2) sudo /etc/init.d/mysql restart
3) Если уже до этого создана БД, то необходимо сделать alter database db_name set CHARACTER SET utf8 COLLATE utf8_general_ci;
После описанных выше манипуляций проблема с кодировкой должна исчезнуть.
1) vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
2) sudo /etc/init.d/mysql restart
3) Если уже до этого создана БД, то необходимо сделать alter database db_name set CHARACTER SET utf8 COLLATE utf8_general_ci;
После описанных выше манипуляций проблема с кодировкой должна исчезнуть.
суббота, 9 июня 2012 г.
Малое время работы ноутбука от батареи на Linux Mint 12
Сначала я хотел написать про то, как же быстро расходуется энергия на моём портативном компьютере в Linux Mint 12, но после того, как я перешёл на Linux Mint 13, моё мнение сильно изменилось в лучшую сторону.
Индикатор батареи стал показывать, что предполагаемое время работы от батареи составляет 5 часов. Это уже хороший показатель. Осталось поставить утилиту powertop и поглядеть, что сажает батарейку.
Индикатор батареи стал показывать, что предполагаемое время работы от батареи составляет 5 часов. Это уже хороший показатель. Осталось поставить утилиту powertop и поглядеть, что сажает батарейку.
Linux Mint. Ошибка NO_PUBKEY при попытке выполнить sudo apt-get update.
Иногда, при попытке выполнить в Linux Mint команду sudo apt-get update вылезает ошибка The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A9BF3BB4E5E17B5. Что это за ошибка и что с ней делать?
В сети был найден следующий рецепт:
В сети был найден следующий рецепт:
1) sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
2) sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys имя_открытого_ключа_на_который_ругается_система
3) sudo apt-get update
После этих манипуляций проблем с менеджером пакетов быть не должно.
суббота, 12 мая 2012 г.
FreeMarker. Продолжение.
Сегодня почти весь день убил на то, чтобы справиться с проблемой: на рабочей станции в среде разработки FreeMarker отлично считывает и заполняет шаблон.
Как только я ставлю портлет на сервер, то на выходе я получаю пустой шаблон! В логах никаких ошибок, включение логов в режим DEBUG тоже ничего дало - FreeMarker находит мой шаблон, но на выходе отдаёт пустой текст. Детальное исследование показало, что FreeMarker считывает шаблон пустым. Додумался проверить кодировку текста шаблона - формально файл был закодирован в UTF-8, но видимо при просмотре или редактировании шаблона кодировка слетела. После приведения файла в UTF-8 мой шаблон заработал на сервере!
Жаль потраченного времени, но зато это помогло мне разобраться получше в API FreeMarker.
Как только я ставлю портлет на сервер, то на выходе я получаю пустой шаблон! В логах никаких ошибок, включение логов в режим DEBUG тоже ничего дало - FreeMarker находит мой шаблон, но на выходе отдаёт пустой текст. Детальное исследование показало, что FreeMarker считывает шаблон пустым. Додумался проверить кодировку текста шаблона - формально файл был закодирован в UTF-8, но видимо при просмотре или редактировании шаблона кодировка слетела. После приведения файла в UTF-8 мой шаблон заработал на сервере!
Жаль потраченного времени, но зато это помогло мне разобраться получше в API FreeMarker.
пятница, 11 мая 2012 г.
FreeMarker
Возникла у меня задача: есть в наличии html шаблон, который надо заполнять данными и отправлять на e-mail. Сначала я подумал, а почему не забить шаблон в код? И как потом поддерживать получившееся Г?
Следующей мыслью было - вынести шаблон в отдельный файл. Это уже лучше. Но возникает следующая проблема - нужно придумывать свой язык для обозначения позиций, где необходимо осуществить подстановку. Поэтому это мысль тоже отпала.
В результате поисков выбор пал на библиотеку FreeMarker (http://freemarker.sourceforge.net/). Библиотека занимает почти 1 мегабайт. Поддерживает java 1.2 и выше. Библиотека является мощным движком для генерации текста по шаблону.
Поддерживает вычисления внутри шаблоне. Надо сказать, что вычисления осуществляются через BigDecimal. Поддерживаются директивы.
Также есть сносная документация, которая описывает все плюшки более подробно.
Конкурентом этой библиотеки является Apache Velocity. Опыта работы с этой библиотекой не было, но судя по форумам народ от неё не в сильном восторге.
Следующей мыслью было - вынести шаблон в отдельный файл. Это уже лучше. Но возникает следующая проблема - нужно придумывать свой язык для обозначения позиций, где необходимо осуществить подстановку. Поэтому это мысль тоже отпала.
В результате поисков выбор пал на библиотеку FreeMarker (http://freemarker.sourceforge.net/). Библиотека занимает почти 1 мегабайт. Поддерживает java 1.2 и выше. Библиотека является мощным движком для генерации текста по шаблону.
Поддерживает вычисления внутри шаблоне. Надо сказать, что вычисления осуществляются через BigDecimal. Поддерживаются директивы.
Также есть сносная документация, которая описывает все плюшки более подробно.
Конкурентом этой библиотеки является Apache Velocity. Опыта работы с этой библиотекой не было, но судя по форумам народ от неё не в сильном восторге.
Подписаться на:
Сообщения (Atom)