페이지

2014년 2월 26일 수요일

Spring Guide - Securing a Web Application 학습정리

https://spring.io/guides/gs/gradle/ Building Java Projects with Gradle
https://spring.io/guides/gs/securing-web/ Securing a Web Application
https://spring.io/guides/gs/convert-jar-to-war/ Converting a Spring Boot JAR Application to a WAR

학습내용 정리

1.
gradle 설치 혹은 업그레이드
http://www.gradle.org/downloads
파일 다운로드 받고 압축해제 후 원하는 위치로 이동 해줍니다.
예: D:\gradle-1.11
기존 gradle 폴더는 지워버리고
환경변수에서 GRADLE_HOME=D:\gradle-1.11 로 설정합니다.
PATH 에 %GRADLE_HOME%\bin 를 추가합니다.

gradle -version
: 버전 출력
gradle
: welcome message 출력
gradle tasks
: 사용가능한 태스크 목록 출력. gradle taskname 형태로 실행
gradle wrapper
: gradlew.bat 파일을 생성 시켜줍니다. 이 파일은 시스템내에 gradle이 설치되어있지 않아도 알아서 다운로드하고 빌드해줍니다. 이렇게 wrapper를 생성하고 프로젝트를 공유하면 그래들이 설치되어있지 않은 유저도 바로 빌드 할 수 있게됩니다.


2.
가이드에서
build.gradle
MvcConfig.java
home.html
hello.html
까지만 작성하고 실행해보면 ( gradlew clean build )

다음과 같은 에러가 발생하는데
Execution failed for task ':bootRepackage'.

public static void main(String[] args)
메소드를 가진 설정 클래스가 없어서 그런것입니다.

가이드에선 Application.java 파일을 만들어 주면 제대로 컴파일됩니다.

3.
java -jar build/libs/gs-securing-web-0.1.0.jar
앱을 실행해보면 로그인 창이 나타나는데

build.gradle 에서

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    // compile("org.springframework.boot:spring-boot-starter-security")
    compile("org.thymeleaf:thymeleaf-spring4")
    testCompile("junit:junit")
}

compile("org.springframework.boot:spring-boot-starter-security")
를 주석처리하고 다시 빌드하고 실행해보면 로그인 창이 나타나지 않습니다.

4.
WebSecurityConfig.java : security 설정 클래스

5.
로그아웃 처리
http://localhost:8080/login?logout

6.
war 파일 만들기
build.gradle 파일에 아래 내용 추가
apply plugin: 'war'
war {
    baseName = 'gs-securing-web'
    version =  '0.1.0'
src/main/java/hello/HelloWebXml.java 파일 생성

톰캣에 넣고 돌려보면
java.lang.ClassNotFoundException: org.apache.tomcat.websocket.server.WsSci
와 같은 에러가 발생하는 경우가 있는데
이경우 가장 편한방법은 에러메시지에 나오는 톰캣버전과 같은 버전의 톰캣에서 돌리면 에러가 발생하지 않습니다.

참고
http://stackoverflow.com/questions/20922958/crash-deploying-spring-boot-war-in-tomcat


댓글 없음:

댓글 쓰기