AXBoot를 IntelliJ IDEA에서 처음 사용할 때 유의할 점

Java|2018. 3. 24. 15:15

AXBoot Initializer로 생성한 프로젝트를 IntelliJ IDEA에서 열고 실행하려고 하면, QMenu, QCommonCode 등의 JPA 도메인 클래스 관련 오류가 발생하면서 빌드가 실패한다.  

이럴 때는 "View > Tools Windows > Maven Projects" 메뉴를 이용해서 Maven 패널을 열고, Lifecycle 하위의 clean, package 골을 차례로 실행한다.  


이 오류는 Querydsl 관련 클래스가 없어서 발생하는데, 위의 과정을 통해서 생성하는 것이다.


EOF


댓글()

AXBoot-WildFly 9을 사용할 때의 JWTSessionHandler 문제

Java|2018. 1. 9. 15:05

com.chequer.axboot.admin.utils.JWTSessionHandler는 javax.xml.bind.DatatypeConverter 클래스를 이용하여 BASE64 인코딩/디코딩을 수행합니다.
그런데 WildFly 9 버전의 경우에는 문제가 있습니다. WildFly 9은 JDK의 DatatypeConverter를 사용하는게 아니라 별도의 내장된 버전을 사용하기 때문입니다.

좀 더 정확하게는 wildfly-9.0.2.Final/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.2_spec-1.0.4.Final.jar 파일에 포함된 것을 사용합니다.

이 버전은 URL-safe 하지 않은 인코딩을 수행하기 때문에 쿠키를 이용한 로그인이 불가능한 심각한 문제가 발생합니다.

아래와 같이 Apache Commons Codec 프로젝트의 Base64 클래스를 사용하도록 수정하면 문제가 해결됩니다.

    import org.apache.commons.codec.binary.Base64;

    private String toBase64(byte[] content) {
        return Base64.encodeBase64URLSafeString(content);
    }

    private byte[] fromBase64(String content) {
        return Base64.decodeBase64(content);
    }

DatatypeConverter 를 써야하는 특별한 이유가 없다면 원본 소스도 이렇게 변경하는게 좋을 것 같습니다. 어차피 Commons Codec 프로젝트에는 이미 디펜던시가 있으니까요.


EOF


댓글()

AXBoot Framework - war 파일 형태로 실행

Java|2017. 10. 14. 15:31

AXBoot Initialzr 로 생성한 프로젝트는 war 파일 형태로 바로 실행이 안된다.
안되길래 그냥 프로젝트 루트에서 $ mvn spring-boot:run 으로 실행했었는데, war 만 배포해서 실행할 일이 생겼다.

원인을 찾아보니 별일은 아니었다. 아래와 같이 Spring Boot Maven Plugin 을 pom.xml 의 plugins 부분에 추가하면 된다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- ... -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.7.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

위 코드는 아래의 Spring Boot 공식 문서에서 가져온 것이다. 자세한 설명은 가서 보시길.

Spring Boot Maven plugin


EOF




댓글()