barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 25 февраля 2016 г.

Maven 3.3.9 и плагины maven-invoker-plugin:1.8 / exec-maven-plugin:1.2

Проблема

При попытке сборки проекта, использующего exec-maven-plugin версии 1.2, с помощью maven версии 3.3.9 возникает ошибка:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (def
ault) on project *****: Command execution failed. Cannot run program
 "mvn" (in directory "D:\***"): CreateProcess error=2, Не удается найти указанный файл ->
 [Help 1]
Аналогичная проблема с плагином maven-invoker-plugin версии 1.8 под maven 3.3.9:
[INFO] --- maven-invoker-plugin:1.8:run (default) @ **** ---
[INFO] Building: pom.xml
[INFO] ..FAILED (0.0 s)
[INFO]   Maven invocation failed. Error configuring command-line. Reason: Maven
executable not found at: C:\Program Files\apache-maven-3.3.9\bin\mvn.bat
При этом версией maven 3.0.4 проект собирался без проблем.

Решение

Поднять версию exec-maven-plugin до 1.4.0, а maven-invoker-plugin - до 2.0.0.

вторник, 16 февраля 2016 г.

WSO2 ESB: wso2-esb-sequence-plugin и заглавные буквы "И"

wso2-esb-sequence-plugin версии 2.0.х, где x>5, при сборке бьет кодировку, превращая заглавные буквы "И" в сиквенсах в кракозябры. Workaround'а, кроме отката на 2.0.4, пока не нашел.

вторник, 2 февраля 2016 г.

PostgreSQL: просмотр пользовательских типов через pgAdmin

pgAdmin умеет показывать пользовательские типы, но эта функциональность по-умолчанию почему-то выключена в настройках. Идем в Файл -> Параметры -> Браузер -> Показать, ставим галочку напротив "Типы", обновляем браузер объектов и вуаля:


понедельник, 1 февраля 2016 г.

ActiveMQ 5.7.0: отключение Dead Letter Queue для определенной очереди

Задача

Для определенной очереди (пусть это будет "MyQueue") отключить использование Dead Letter Queue.

Решение

В activemq.xml добавить <discardingDLQBrokerPlugin dropOnly="MyQueue" dropAll="false"/> в блок <plugins/>. Перезапустить ActiveMQ.
ЗЫ Важно указывать dropAll="false", т.к. по-умолчанию он установлен в true и имеет приоритет над dropOnly.

среда, 27 января 2016 г.

Spring Boot: No qualifying bean of type [org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder] found

Проблема

Перевели проект с spring boot 1.2.6 на 1.3.1. При старте приложения начала падать ошибка:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'xxxEntityManagerFactory' defined in class xxx.xxx: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder]: : No qualifying bean of type [org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
    at ...
Решение

В Spring Boot 1.3.1 вместо 
org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder
нужно использовать 
org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder.

среда, 20 января 2016 г.

Виртуальный съемный диск под Windows

Бывают ситуации, когда нужен виртуальный съемный диск, например, чтобы использовать его в качестве контейнера закрытого ключа шифрования. Для этих целей подойдет бесплатная утилита ImDisk: http://reboot.pro/files/file/284-imdisk-toolkit/. Чтобы монтируемый этой утилитой диск был съемным, необходимо использовать ключ "-o rem" (либо при использовании ImDisk через консоль, либо в графическом интерфейсе конфигуратора на вкладке "Advanced" в поле "Additional parameters").