1.3.0에서 1.3.4 또는 1.4.2로 버전업할 때 유의사항을 소개한다.
play1 framework가 잠깐 중지되었다가 다시 진행되어 개발되고 있다.
특별히 API는 거의 바뀌지는 않고, 의존 library 버전 업 또는 elastic한 코드 유지보수 정도로 진행되고 있다.
play1 framework를 1.3.0에서 1.3.4 또는 1.4.2로 버전 업할 때, 기존에 쓰던 netty 버전이 이슈가 될 수 있다.
play1 1.3.4 또는 1.4.2는 netty 3.9.8 final 버전을 사용하고 있다.
특히 PlayHandler.java에서 netty 3.9.7부터 소개된 org.jboss.netty.handler.codec.http.cookie.ServerCookieEncoder 때문이라도 3.9.7 이전 버전을 쓸 수 없다.
https://github.com/playframework/play1/blob/master/framework/src/play/server/PlayHandler.java#L412
nettyResponse.headers().add(SET_COOKIE, ServerCookieEncoder.STRICT.encode(c));
만약 그 이하의 버전의 netty를 사용할 때는 500 에러와 함께 internal error (check logs)만 보게 될 것이다.
(문제를 해결하기 위해 play 소스의 PlayHandler.java를 수정하면서 진행하니. 해당 코드의 Unexpected Error만 출력되는 것을 확인할 수 있었다. 그래서 더 깊이 보니. ClassNotFoundException같은 류로 여겨진다.)
-> 따라서 기존의 웹 애플리케이션 서버의 netty 버전을 3.9.8 final로 쓰면 간단히 문제는 해결된다.
*play1의 단점
Play1 framework의 PlayHandler.java 코드를 살펴보면, Exception 처리가 잘 안되어 있다. 따라서 문제가 생겼을 때 아무것도 못할 수 있는데, 이때는 framework/src 디렉토리 밑의 소스를 수정하고 ant 빌드하면서 play 코드를 실행할 수 있다. (play1 framework는 Exception 기반의 framework라....)
* dependency lib 이슈
play 애플리케이션이 play/framework/lib/asm-all-5.1.jar 대신 asm-all-4.1.0.jar를 써야 동작되는 이슈가 있었다.
관련해서 lib를 교체하고 사설 jar를 만들어 배포해서 실행토록 진행했다.
'general java' 카테고리의 다른 글
play1 framework 유틸리티 살펴보기 - play help (0) | 2016.06.13 |
---|---|
FilenameUtils 클래스 사용 예제 (0) | 2016.06.02 |
[guava] symmetric difference/difference, relative(absolute) complement 개념 (0) | 2016.04.28 |
[jenkins] 간단한 인증 처리 설정하기 (0) | 2016.04.18 |
[jenkins] 인증이 필요한 jenkin job의 모니터링하기 (0) | 2016.04.18 |