Генерация классов из нескольких XSD

Если вы пишите у себя клиент для вызова внешнего soap-сервиса, скорее всего вы выкачали с этого сервиса wsdl и написали у себя в pom.xml что-то типа такого:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.12.3</version>
    <executions>
        <execution>
            <id>generate-scan-server</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>initialize</phase>
            <configuration>
                <schemaIncludes>
                    <include>ScanServerWS.wsdl</include>
                </schemaIncludes>
                <generatePackage>ru.ebrains.ws.scanserver</generatePackage>
                <removeOldOutput>false</removeOldOutput>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <forceRegenerate>true</forceRegenerate>
        <schemaDirectory>src/main/resources/wsdl</schemaDirectory>
        <bindingDirectory>src/main/resources/bind</bindingDirectory>
        <args>
            <arg>-XtoString</arg>
            <arg>-XtoString-toStringBuilder=com.acme.foo.MyStringBuilder</arg>
            <arg>-Xequals</arg>
            <arg>-XhashCode</arg>
        </args>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-basics</artifactId>
                <version>0.9.5</version>
            </plugin>
        </plugins>
    </configuration>
</plugin>
Читать далее Генерация классов из нескольких XSD

Local Java Applications Cannot Be Monitored

Сегодня словил OutOfMemoryError, ну подумал «ща как открою JavaVisualVM как начну копаться в памяти», а как открыл, получил «сасай» и сообщение при открытии: «Local Java Applications Cannot Be Monitored»

Если коротко об ошибке — VisualVM не может мониторить локальные java-приложухи

Читать далее Local Java Applications Cannot Be Monitored

@PreAuthorize не работает на методах класса-родителя

Интересная особенность спринг-секурити

Я почему-то думал, что навесив @PreAuthorize я полностью засекьюрю весь класс, все методы и все методы родителя, но бинпостпрцоессор, который обрабатывает аннотацию PreAuthorize берет bean.getDeclaredMethods(), а не getMethods(), из-за чего все методы родителя не защищены и приходится навешивать @PreAuthorize так же и в контроллере родителя от которого я расширяюсь

Список SuppressWarnings аргументов

В первой колонке ищем варнинг-дескрипшн, со второго берем значение и ставим над методом:

@SuppressWarnings("<аргумент>") //шаблон
@SuppressWarnings("ResultOfMethodCallIgnored") //пример
@SuppressWarnings({"ResultOfMethodCallIgnored", "MagicNumber"}) //можем передавать массив аргументов

Читать далее Список SuppressWarnings аргументов

Unable to initialize due to invalid secret key

Дарова нигеры.

Сегодня поймал вот такой эксепшн:

Caused by: java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key
at org.springframework.security.crypto.encrypt.CipherUtils.initCipher(CipherUtils.java:120)
at org.springframework.security.crypto.encrypt.AesBytesEncryptor.encrypt(AesBytesEncryptor.java:115)
at org.springframework.security.crypto.encrypt.HexEncodingTextEncryptor.encrypt(HexEncodingTextEncryptor.java:36)

По дефолту Spring Security использует 256-битный ключ для шифрование, а JDK из коробки поддерживает только 128-битный ключ. Чтобы разрулить эту проблему нужно скачать local_policy.jar и US_export_policy.jar из оракла: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html и заменить их по пути: /путь_до_jdk/jre/lib/security

Internet Explorer не отображает glyphicon.

Столкнулся сегодня с интересной проблемкой:

В ie не отображаются glyphicon glyphicon-pencil, которые идут в комплекте с bootstrap, а вернее в ie вместо иконок отображаются иероглифы. Немного покопав ынтырнет, выяснил, что если у вас совпадают следующие условия: ie + ssl (https) + no cache (отключен кэш), то ie отказывается загружать @font-face. Вернее первый раз он загружает все корректно, но если обновить страницу или нажать на кнопку «назад», то это дерьмо отказывается работать и мало того, майкрософт об этом знают и чинить тоже не собираются: вот пруф

Проблему эту решают разными способами:
1. Самый очевидный и быстрый, включить кэш. Банально убрав из хедера, но это мне не подходило, т.к. работаю в сфере интерпрайс и no-store это самый строгий заголовок, отменяющий любые кэши. Он был придуман специально для работы с конфиденциальной информацией.

2. Дальше люди на стековерфлоу рекомендовали включить кеш только для шрифтов на стороне веб-сервера, пример для nginx:

# Favicon and fonts
location ~* \.(ico|woff|ttf|svg|eot|otf)$ {
        expires 1w;
        access_log off;
        add_header Cache-Control "public";
}

3. Самые изощренный заменяю иконки на png 🙂

public static void main

@SpringBootApplication
public class Ebrains {

    public static void main(String[] args) {
        SpringApplication.run(Ebrains.class, args);
        System.out.println("omg, its blog");
    }
}