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를 만들어 배포해서 실행토록 진행했다.

Posted by '김용환'
,