레이블이 spring인 게시물을 표시합니다. 모든 게시물 표시
레이블이 spring인 게시물을 표시합니다. 모든 게시물 표시

2013년 3월 8일 금요일

jetty embedded + spring + spring-security + spring-data-jpa + mysql

환경
org.eclipse.jetty : 8.1.8.v20121106
org.springframework : 3.2.0.RELEASE
org.springframework.data : 1.2.0.RELEASE
org.springsecurity : 3.1.3.RELEASE
mysql : 5.5.28

STORY
web.xml, spring.xml 및 각종 config.xml을 없애고 java code 및 java annotation 으로 처리하는것이 최종 목적.
그와 함께 tomcat 대신 jetty를 임베디드 시켜 application 실행시키듯이 main method로 서버실행.
부가적으로 인증은 spring-security를 사용하고 db접근은 spring-data-jpa를 이용하였다

TEST
1. database-context.xml에서 db 설정을 한다 
   - database schema만 생성시켜 놓는다
   - 테이블이 없다면 서버 실행시 테이블을 자동생성 시킴
2. com.dorothy.jetty.Main - main을 실행시킨다
3. test user 정보를 db에 생성시킨다
4. restAPI를 호출한다
POST /test/{pathVar} HTTP 1.1
Host: localhost:8000
Authorization : access_id:access_key
5. log를 확인한다

TODO
처음부터 최종목표대로 NoXML로 하고 싶었지만 은근 애를 먹었다
그래서 일단은 xml설정으로 테스트를 시작하였다
이 소스를 가지고 NoXML로 바꿔나가야겠다

PS.
아 근데 구글블로그는 파일 첨부가 안되는거였군.....ㅡㅡ;;;
일단은 구글드라이브에..

한글 포함된 url 전송


환경
CentOS release 5.8 (Final)
apache-tomcat-7.0.35

현상
개발환경을 모두 utf-8로 맞추고 개발을 했지만 아무리 GET으로 api를 호출해도 한글만큼은 깨지는것이였다
물론 클라이언트에서는 utf-8로 인코딩후 요청

GET /list/?objectPath=/%ED%95%9C%EA%B8%80/ HTTP 1.1

서버는 아래처럼 spring을 사용했기 때문에 당연히 spring에서 처리해주는걸로 기대했지만 그게 아니였다 ㅡㅡ;;

org.springframework-version : 3.2.0.RELEASE
org.springframework.data-version : 1.2.0.RELEASE
org.springsecurity-version : 3.1.3.RELEASE

해결방법
처음엔 받아온 값을 utf-8로 변환시켰었다

String str = new String(value.getBytes("8859_1"), "utf-8");

당연히 잘되었음

하지만 먼가 소스상의 지저분함을 느꼈었고 다른 해결책을 알아보았다
당연히 간단한 방법이 있었음

tomcat의 server.xml에 설정만 해주면 되었다

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />

결론
한글은 위대하다