2012-12-26 2 views
2

JBoss에 많은 war이 있다고 가정하고 HTTP 요청을 Jboss와 같은 웹 컨테이너에서 처리하는 방법이 흥미 롭습니다. Jboss는 요청이 그 중 하나에 전달되어야한다는 것을 어떻게 알 수 있습니까? ? 그리고 만약 내가 struts2을 사용했다면 싶습니다. 마침내 reqeust가 struts2의 Action으로 어떻게 전달 되었습니까? 아무도 내가 알아낼 수있게 도와 줄 수 있니? 감사. 업데이트struts2를 사용하면 Jboss에서 http 요청을 처리하는 방법

는 다음과 같은 A.War 및 B.War에서 모두 동일한 서블릿 매핑을 말한다. 그러나 그들은 URL이 /deploy/test 경우 JBoss의 HTTP 요청 처리 순서에 일이 무엇 HttpServlet

<servlet-mapping> 
     <servlet-name>DeployServlet</servlet-name> 
     <url-pattern>/deploy/*</url-pattern> 
    </servlet-mapping> 

의 클래스를 다른 구현된다?

는 웹 컨테이너가 특정 Resouce의에 HTTP 요청을받을 때의이 summany 만들어 보자

업데이트 (*합니다. * .jsp로 등 HTML), 웹 컨테이너가이 문제를 처리하는 전쟁 응용 프로그램을 선택합니다 컨텍스트 xml (예 : server.xml, tomcat)에 대한 요청을받습니다. 다음, 먼저 요청을 처리하기 위해 web.xml에 정의 된 서블릿을 선택합니다이 전쟁 응용 프로그램 ...

아니라, 내 질문 : FilterServlet보다 일찍 HTTP 요청을 실행?

감사합니다.

+0

우리는 컨테이너에 struts2 필터 디스패처에 대해 알려주고 매핑을 통해 호출 할시기를 지정하고 서버가 서버 컨텍스트와 응용 프로그램을 어떻게 알 수 있는지에 대해 web.xml을 살펴 봅니다. –

+0

@UmeshAwasthi 업데이트 된 콘텐츠를 검토하는 데 도움을줍니다. 감사. –

답변

2

먼저 http 요청이 웹 서버에 수신됩니다. 보통 서블릿 컨테이너 (tomcat과 같은)와 애플리케이션 서버 (JBoss와 같은)는 inbuilt 웹 서버를 가지고 있습니다. 그래서 웹 서버 또는 http 서버라고도하며 요청을 받고 처리 할 수 ​​있는지 여부를 결정합니다.

웹 서버는 HTML, 이미지 등의 정적 컨텐츠 요청을 처리 할 수 ​​있습니다. 요청이 동적 컨텐츠에 대한 것이면 Servlet 컨테이너로 요청을 전달합니다.

서블릿 컨테이너는 Tomcat 및 JBoss AS와 같은 Java EE 서버의 일부입니다. 서블릿 컨테이너에는 배포 된 모든 응용 프로그램에 대해 알고있는 배포 하위 항목 (.xml 파일)이 있습니다. 그리고 컨테이너가 시작할 때이 설정 파일은로드되고 (객체로 변환됩니다) 가져옵니다. 따라서 배치 서술자 매핑을 사용하여 요청이 유효한지 여부를 결정하고, 그렇다면 요청은 적절한 자원 (예 : 서블릿)으로 전송됩니다.

자세한 내용은 서블릿의 수명주기 및 contaner 작동 방법을 참조하십시오.

2

서블릿 매핑은 응용 프로그램 컨텍스트에 상대적입니다. 2 개의 전쟁을 전개하면 두 가지 상황이 생깁니다. 그렇지 않으면 배포 오류가 발생합니다. 당신은 정말 당신이 사용하는 것이 당신이 http://my_server.com

전쟁 중 하나의 리소스에 액세스 서버에 배치 된이 전쟁 warA.war 및 warB.war 을 말할 수, 컨텍스트 루트로 전쟁을 설정할 수 있습니다

http://my_server.com/warA/somePage

http://my_server.com/warA/deploy/과 같을 것이다 당신이 설명 된 매핑을 사용

또는

http://my_server.com/warB/somePage

당신이 http://my_server.com/deploy/로 리소스에 액세스 할 수있는 컨텍스트 루트로 하나 전쟁을 설정하지만 서버가 계속 /에서 와라에 배포하는 것이 번역되어있는 경우 /되는 서블릿이기 때문에

그래서 혼란이되지 않을 것 배포 검색 됨.

+0

당신은 요청이 먼저 HttpServlet의 특정 구현 클래스에 존재 함을 의미합니다. 고마워요? –

+0

아니요, 요청은 먼저 적절한 컨테이너 (해당 서블릿을 포함하는 전쟁)로갑니다. 서블릿 섹션의 생명주기 (http://en.wikipedia.org/wiki/Java_Servlet)를 살펴보면, 프로세스를 설명하는 데 꽤 도움이됩니다. – gebuh

+0

감사합니다. 포스트의 내 업데이트 된 내용을 검토하십시오. –

관련 문제