'invoker'에 해당되는 글 2건
- 2007/05/18 invoker 의 역할
- 2007/05/05 Tomcat 에서 invoker 사용하기
아무래도 저는 궁금한것은 쉽게 넘어가지 못하는 성격인것 같습니다.
이전 포스트를 보시면 알 수 있겠지만, 책을 구입후 처음부터 invoker 이라는 녀석을 사용해서 Servlet 를 이용하도록 되어 있는데, invoker 에 관한 주변설명이 없어서 역할이나 목적등을 쉽게 이해하기가 힘들었습니다. 일단 무언가를 시작하는 입장이기에 의문보다는 전체적인 흐름에 포커스를 마추고 따라가다보면 일정 시점에서 궁금증을 해결 할 수 있을 거라 생각했으나, 자주 등장하고, 또한 사용 빈도가 높은 무언가를 목적이나 역할도 모르는채 이용한다는것이 조금 앞뒤가 안맞는다는 생각에 이것저것 알아보기 시작했습니다.
그래서 도달한 결론은 Thread 라는 것이었죠. :-)
이 invoker 이라는 녀석은 컨테이너 레벨에서 단독으로 동작하는 쓰레드 였습니다. Servler 을 invoker 로 매핑을 시켜주면, 매핑되어있는 URI 로 서블릿을 실행할 수 있는 역할을 하는 것이죠. 조금 더 구체적으로 설명을 해 보자면, 클라이언트가 서블릿을 호출하면, 메모리에 로드되어 있는 서블릿의 Context 를 할당받아, Java Application 의 main() 메소드에 해당되는 서블릿의 service() 메소드를 호출해 주는 역할을 합니다.
실제 학습을 하는데 있어서 이것이 무엇을 위해 존재하는지 정확한 역할을 몰라도 따라하기 식으로 학습해 나아가면 크게 문제가 없는부분이 상당수가 있습니다. 그 따라하는 과정 자체를 학습해 버리니까요. 하지만 이것들을 기반으로 하는 상위의 무언가를 배워나갈때 걸림돌이 되느냐, 아니면 촉매제가 되느냐 하는 차이가 발생할 수 있습니다. 사용되는 빈도수가 높으면서도 정확한 목적을 모른채 사용해 나간다면 자기 자신이 답답해 하는것이야 말로 정상적인 사고방식은 아닐까요? :-)
이전 포스트를 보시면 알 수 있겠지만, 책을 구입후 처음부터 invoker 이라는 녀석을 사용해서 Servlet 를 이용하도록 되어 있는데, invoker 에 관한 주변설명이 없어서 역할이나 목적등을 쉽게 이해하기가 힘들었습니다. 일단 무언가를 시작하는 입장이기에 의문보다는 전체적인 흐름에 포커스를 마추고 따라가다보면 일정 시점에서 궁금증을 해결 할 수 있을 거라 생각했으나, 자주 등장하고, 또한 사용 빈도가 높은 무언가를 목적이나 역할도 모르는채 이용한다는것이 조금 앞뒤가 안맞는다는 생각에 이것저것 알아보기 시작했습니다.
그래서 도달한 결론은 Thread 라는 것이었죠. :-)
이 invoker 이라는 녀석은 컨테이너 레벨에서 단독으로 동작하는 쓰레드 였습니다. Servler 을 invoker 로 매핑을 시켜주면, 매핑되어있는 URI 로 서블릿을 실행할 수 있는 역할을 하는 것이죠. 조금 더 구체적으로 설명을 해 보자면, 클라이언트가 서블릿을 호출하면, 메모리에 로드되어 있는 서블릿의 Context 를 할당받아, Java Application 의 main() 메소드에 해당되는 서블릿의 service() 메소드를 호출해 주는 역할을 합니다.
실제 학습을 하는데 있어서 이것이 무엇을 위해 존재하는지 정확한 역할을 몰라도 따라하기 식으로 학습해 나아가면 크게 문제가 없는부분이 상당수가 있습니다. 그 따라하는 과정 자체를 학습해 버리니까요. 하지만 이것들을 기반으로 하는 상위의 무언가를 배워나갈때 걸림돌이 되느냐, 아니면 촉매제가 되느냐 하는 차이가 발생할 수 있습니다. 사용되는 빈도수가 높으면서도 정확한 목적을 모른채 사용해 나간다면 자기 자신이 답답해 하는것이야 말로 정상적인 사고방식은 아닐까요? :-)
책을 구입하고 느닷없이 시작하는 첫번째 Servlet 예제.
마치 당연하다는 듯이 invoker 를 사용하는데, 문제는 이에관한 주변설명이 전혀 없다는 것입니다. 책이 조금 예전에 발행되었기에 최근에 Tomcat 에서 정책이 변한것인가 싶어서 여기저기 한참 기웃거리다가 알아낸것은, 책이 발행되는 시점에서는 이미 보안상의 이유로 인해서 Tomcat 에서 invoker 는 기본적으로 "주석" 처리가 되어있었다는 것을 알게 되었습니다.
시작부터 책에 실망을 조금 하게 되는군요. :-)
[Tomcat_Home]/webapps/project/WEB-INF/web.xml 파일
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
</servlet>
invoker 을 설정해 주는 부분과
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
invoker 을 매핑해 주는 부분을 작성해 줍니다.
([Tomcat_Home]/conf/web.xml 을 수정하는 경우에는 각각에 해당하는 주석을 제거해 줍니다.)
[Tomcat_Home]/conf/context.xml 파일
<Context reloadable="true" privileged="true">
옵션을 준다.
보안상의 이유와, 하나의 서버에 여러개의 Web Application 이 동시에 작동하는 경우에 이런식으로 컨테이너 전체의 설정을 변경해야 하는 방식은 옳지 않다는 생각이 들었습니다. 아직은 첫발을 내딛는 입장이기 때문에 일단은 시키는 대로 따라가 봐야 겠습니다.
[2007.6.26] 각각의 독립 Application 에 invoker 설정하는 법을 알아내어(?) 수정하였습니다. :-)

Prev

