julio@fEELING

웹 프로그래머를 위한 서블릿 컨테이너의 이해-인정 본문

感 Book

웹 프로그래머를 위한 서블릿 컨테이너의 이해-인정

julio22 2016. 6. 18. 14:43

한빛ebook 리얼타임 07 웹 프로그래머를 위한 서블릿 컨테이너의 이해 (2016/06/07)
최희탁 지음 | 한빛미디어(주) | 2014.3.14


tcpmon을 가지고 http protocol을 알아본다. 예전 책이라, 지금은 tcpmon 프젝은 종료됐고, 현재는 postman을 많이 사용하니 그것으로 본다고 생각하면 될듯.

 

책 앞부분은 HTTP 1.1에 대해 정리.

 

servlet 서블릿을 이해하면 된다. - javax.servlet.Servlet interface를 구현한 것을 서블릿이라 보면 된다.

다만 servlet을 init(ServletConfig config)/ServletConfig getServletConfig()/service(ServletRequest req, ServletResponse res)/String getServletInfo()/destory method 추가

 

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable
public abstract HttpServlet extends GenericServlet
public interface ServletRequest
public interface ServletResponse

pubilc interface HttpServletRequest extends ServletRequest
pubilc interface HttpServletResponse extends ServletResponse

등등...

 



톰캣 최종분석을 저자는 읽었나 보다. 톰캣 4.x 버전 언급되어 있어서 그렇다. 물론 추측이지만, 서블릿 컨테이너를 만들 수 있느냐 없느냐에 대해 난 지금은 못하지만, 시간만 주면 만든다고 자신할 수 있다.

현실은 내가 만든 서블릿 컨테이너를 사용할 사람이 있는가와 그것이 현존 제품보다 월등히 좋은 성능을 발휘할 수 있을지는 자신하지 못하지만...

 


그렇기에, 함께 만들고 구현하고 오픈소스화해서 제품을 만드는 트렌드가 소프트웨어 업계를 여기까지 왔는데 말이지... (이 단계까지 도달한 산업군은 아직 우리 소프트웨어 말고 없다! 슈퍼맨과 전기 중 누가 더빠른가! 하는 비교되지 않는 대상을 연결해 생각해보면서 ... 요새 얻은 결론은 SW가 최첨단인 동시에 기록(역사)을 새롭게 만들고 있다고 본다. 결론은 내리지 못하겠지만!  ... 매트릭스가 될지... ^^;;(발산은 여기까지)

 

Netty 적용하면 좋지 않을까 부터 아파치의 대안인 nginx가 생각나면서 저자가 일한 그 회사에서 만든 제품이름도 생각나긴 함. 하지만 거기까지가   끝. 나도 끝물인가^^;;

적은 페이지가 이 시리즈의 특징! 도서 기획 천프로 공감! TCPMon이란 간단하지만 아이디어가 넘쳐나는 오픈소스도 알게 되었고(몇 년전부터 알고 있었지만 *_*), 다만, 아래 언급한 것은... 가볍게 명쾌하게로 생각했던 내게 뜬금없는 생각이 들겠다. 오픈소스 closed 되었고, 자바웹프로그래밍에선 찰스Charles(상용)를 이용한 패킷 분석을 설명하고 있다.

그래도 서블릿 컨테이너가 돌아가는 방식을 간명한 소스로 보여준 것은 제목에 부합된다. 눈으로만 보는 건 리프레쉬가 되지 않아서 손으로 서버 소스 둘은 타이핑해 이해했다. 그런데 자신이 서블릿 컨테이너를 만들지 않는다면 추상적으로 이해하고 넘어가는 것도 나쁘지 않은 것 같은데... 자바 7 NIO 2 파일&네트워크 프로그래밍(Pro Java 7 NIO 2)의 책 소스 보면서 한 번 읽었음... 음 3번 정도 읽어보고 기록해 두면 개발할 때 찾아서 할 수 있는 기억은 가지겠지!가 딱 현재의 myStatus.

 

줄긋기
p40 HTTP/1.1이 정의된 RFC 2616 문서를 찾아 읽어보십시오.
p94 성능 개선1 - 버퍼의 사용 예제를 java NIO를 써서 구현하여 보고 성능을 확인하여 보십시오.