메뉴 건너뛰기

tnt_os

IBM WebSphere WebSphere의 document Root

운영자 2003.06.11 17:34 조회 수 : 2936 추천:62

>
> {[질문] IBM WebSphere 4.0에서 sample 소스인 default_app의 index.html을
>  호출하는 방법은?}
> {김영수(guest), ys2@dit.dongbu.co.kr}
>
> IBM WebSphere Application Server 4.0에서 sample 소스로 제공되는 default_app와
> examples에서 default_app의 경로에 있는 very_simple.jsp는 URL 경로를
> http://localhost/very_simple.jsp 를 이용하여 액세스가 가능한데, 같은 경로에
> 존재하는 index.html은 브라우저에서 읽어오지를 못합니다.
>
> 같은 샘플인 examples는 http://localhost/webapp/examples/index.html 로 액세스가
> 가능한 것을 보면 파일지원 인에이블러 때문이 아닌것 같은데, 확실한 이유를
> 모르겠습니다.
>
> HTTP Server서비스를 종료한 후 http://localhost:9080/index.html 도 시도해 보았지만
> 실패했습니다.
>
> default_app의 index.html이나 login.html을 실행하려면 어떻게 해야 하나요?
> 물론 examples의 콘텍스트 루트는 /webapp/examples 이고 default_app 의 콘텍스트
> 루트는 "/" 입니다.
>
> 테스트 환경은 windows 2000 Server + WebSphere 4.0 AE + DB2 7.1 + IBM HTTP Server
> 1.3.19 입니다.
>
> 조언 부탁드립니다. 좋은 하루 되세요 ^^
>
> 김영수 ys2@dit.dongbu.co.kr



Websphere V4 의 "응용프로그램 어셈블리 도구"를 띄워 보십시요.
윈도즈라면 시작-->프로그램-->IBM 웹스피어 --> "응용프로그램 어셈블리 도구" 로
띄우거나, 관리콘솔의 "도구" 메뉴에서 "응용프로그램 어셈블리 도구"를 선택해도
됩니다.

파일 열기를 선택하여 아래 파일을 열어보십시요.

C:WebSphereAppServerinstallableAppssampleApp.ear

즉, 님이 보셨던 두개의 "웹응용어플리케이션"은 이 EAR 파일에 그 설정정보가 담겨
있습니다.

좌측 트리를 전부 확장하면 크게 두개의 웹모듈이 담겨 있는데, 하나는 "Default
Application" 이고, 또다른 하나는 "Examples Application"입니다.

다음과 같은 순서로 클릭해 들어가 보세요

Sample Application
  --> 웹모듈
     --> Default Application 클릭

우측 중간 탭에서, "IBM확장"을 클릭 해 보시면, 그 아래에 "파일서비스사용가능"
체크박스가 unchecked 되어 있는 것을 알 수 있습니다. 즉, 문서루트가 "/"로 맵핑된
default_app 는 "파일서비스"기능을 사용하고 있지 않습니다.

(Version 3.x 에서는 "파일지원 인에이블러"로 용어가 사용되었으나, V4 에서는 단지
"파일서비스" 기능을 사용한다/안한다로 설명되는 듯 합니다. 내용은 동일한 것이지만)

반면, "Examples Application" 에서 동일한 항목으로 쫓아 들어가 보시면, 문서루트가
"/webapps/examples" 로 URL맵핑된 "Examples Application"은 "파일서비스사용가능"
항목이 체크되어 있는 것을 확인할 수 있습니다.

따라서, 만약  님이 http://localhost/index.html 이라고 호출하면, defaiult_app는
파일서비스를 하지 않으므로 "Default Application" 이 설치된 디렉토리, 즉,
C:WebSphereAppServerinstalledAppssampleApp.eardefault_app.war 디렉토리에서
index.html 을 찾는 것이 아니라, 웹서버인 IBM HTTP Server 의 httpd.conf 에 정의된
DocumentRoot 디렉토리에서 index.html  을 찾게 됩니다.
(막 WebSphere V3 를 default 상태로 설치하셨다면, "IBM HTTP 서버 사용을 환영합니다"
라는 웹서버의 초기화면이 나올 것입니다.)


NOTE: 설치시 기본적으로 제공되는 샘플들은 어디까지나 샘플일 뿐입니다. 실 프로젝트
환경에서는 별도로 WAR, EAR 파일을 "응용프로그램 어샘블리 도구"로 다시 만드시고,
"파일 서비스"기능은 사용하지 않도록 un-checked 하셔서 만드세요.
왜냐면, (늘 했던 얘기지만) static 한 컨텐츠(*.html, *.gif, *.css)들은 웹서버가
담당토록 하는 것이 성능향상에 도움이 되고, 또, 향후, 웹서버와 웹어플리케이션서버를
분리할 땐, 당연히 이렇게 해야만 하는 것이 바람직하기 때문입니다.
웹서버의 DocumentRoot 와 해당 "웹응용어플리케이션"의 Deploy된 디렉토리가 굳이
될 필요는 없고, 디렉토리 구조만 동일하면 됩니다. (같아도 상관 없지만...)

디렉토리 구조는 프로젝트가 시작되기 전부터 고민고민해서 설계해야 하는데, 만약
웹응용어플리케이션이 하나밖에 없다면 별다른 고민이 필요없겠지만, 하나 이상의
웹응용어프리케이션이 있다면, 그 중 이미지 파일이나, 공통적으로 사용하게된 *.html
파일들이 도출될 것입니다. 이것이 각각 상대적인 URL경로로 맵핑된 웹응용어플리케이션
간에 적절히 불려질 수 있도록 하려면, 결국 웹서버의 DocumentRoot 하부의 구조는
다음과 같아야 할 것입니다.

WAR1 URL 컨텍스트 : /
WAR2 URL 컨텍스트 : /pub
WAR3 URL 컨텍스트 : /member

일 때,

WAR1 을 위한 웹서버의 DocumentRoot : C:.....htdocs
WAR2 을 위한 웹서버의 DocumentRoot : C:.....htdocspub
WAR3 을 위한 웹서버의 DocumentRoot : C:.....htdocsmember

반면, WAR 들이 EAR 파일에 포함되어 Deploy 되면, (이것 역시 지정해 주기
나름이겠지만) 통상 C:......installedApps<ear_name><war_name> 디렉토리가
될 것입니다. 따라서, 예를 들어 WAR2 를 위한 구조만을 보면,

C:......installedApps<ear_name><WAR2_name> 하부 디렉토리의 구조가
C:.....htdocspub 의 하부구조와 동일하되 정적컨텐츠(*.html,*.gif...)와 *.JSP
파일들이 각각 구분되어 저장되어야 한다는 것입니다.

("C:.....htdocspub" 디렉토리는 어떤 의미를 가지냐면, "웹서버의 Virtual Host의
DocumentRoot("c:...htdocs") 디렉토리 하부에 있는, 관련된 WebSphere 웹응용어플리케
이션 "WAR2" 의 Context URI 문서루트("/pub")와 동일한 이름의 서브 디렉토리" 라는
의미가 됩니다. 곰곰히 생각해 보시면....)

PS: 이렇게 정적 컨텐츠와 JSP와 같은 동적컨텐츠의 서비스를 분리하게 되면, 흔히
실수를 범하는 부분이 JSP에서 page include 와 같은  테그에서 *.html, *.txt 와
같은 정적컨텐츠를 include 할 수 없게 된다는 것입니다.(당연하죠? 웹서버와 WAS가
물리적으로 서로다른 머신에 존재할 수도 있는 상황이고, 그것을 서비스하는 주체와
물리적으로 놓여 있는 디렉토리구조 조차 다르잖습니까...) 이처럼, 정적 컨텐츠를
JSP에서 page include 를 하려면 WebSphere가 정적컨텐츠까지 서비스하는 상태인
"파일서비스사용가능" 항목이 checked 되어 있을 때만 가능합니다.


NOTE: 이처럼 "파일서비스"기능을 다시 사용토록 혹은 사용치 않도록 변경하는 방법은
"응용프로그램 어셈블리도구"를 이용하여 다시 EAR파일을 Deploy 하여도 되겠지만,
이것을 원치는 않을 겁니다. 아래 디렉토리에 다음과 같은 파일이 있습니다.

D:WebSphereAppServerinstalledAppssampleApp.eardefault_app.warWEB-INF
ibm-web-ext.xmi

이 파일에 보면, 아래와 같이 "IBM확장옵션"들이 정의되어 있는 것을 볼 수 있습니다.

<webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
     xmlns:webappext="webappext.xmi"
     xmlns:webapplication="webapplication.xmi"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmi:id="WebAppExtension_1"
     reloadInterval="5"
     reloadingEnabled="true"
     defaultErrorPage="error.jsp"
     additionalClassPath=""
     fileServingEnabled="false"  <--- 이 부분 !!
     directoryBrowsingEnabled="false"
     serveServletsByClassnameEnabled="true"
>
   <webApp href="WEB-INF/web.xml#WebApp_ID"/>
</webappext:WebAppExtension>

이 중, fileServingEnabled="false" 옵션을 수정해 주면 됩니다. (다른 옵션들 역시
그 이름만으로 어떤 기능을 하는 것인지 알 수 있을 겁니다.)

이렇게 변경을 했으면, WebSphere V4를 정지후 다시 시작하고, 특히, 이처럼 변경된
내용을 웹서버인 IBM HTTPServer의 Plug-In 모듈이 인식토록 하려면, Plug-In 모듈이
참조하는 $WAS_HOME/config/ 디렉토리에 있는 plugin-cfg.xml, plugin-cfg-service.xmi
파일들이 변경되어야 합니다. 이 파일은 통상, 관리콘솔에서 해당 Nodes 밑의 서버명을
우측 마우스로 클릭 후 "Regen Webserver Plugin" 항목메뉴를 클릭하면 자동으로
곧바로 해당 파일들이 수정됩니다. 그러나, 이 파일들이 수정되었다고 하여 곧바로
이미 기동되어 있는 웹서버가 인식하는 것은 아니니 만큼 웹서버를 재기동해 주어야
할 것입니다.

NOTE2: 또, $WAS_HOME/config/ 디렉토리에 있는 웹서버가 참조하는 Plug-In 구성파일은
WebSphere 의 Admin Server 가 기동할 때, 또다시 자동으로 재생성할 수도 있고,
그렇지 않을 수도 있는데, 이는 아래의 항목에서 그 여부를 제어할 수 있습니다.

관리콘솔
   --> Nodes
      --> (서버명:lwy)
        --> Application Servers
           -->(어플리케이션서버명:Default Server) 클릭

우측의 중간에 위치한 탭에서 가장 오른 쪽의 "Custom" 탭을 선택하면,
현재 "Automatic Generation of Plugin Configuration" 값이 "true 혹은 false" 가
되어 있을 겁니다. 이를 "Edit" 버튼을 이용하여 팝업창에서 변경해 줄 수 있습니다.


이원영
lwy@kr.ibm.com, javaservice@hanmail.net
번호 제목 글쓴이 날짜 조회 수
31 Bug Check 0x50: PAGE_FAULT_IN_NONPAGED_AREA 일때 확인사항 박상현 2003.11.20 16923
30 USB 메모리나 하드에 WIndows XP 설치하기 (USB에 XP설치) 구퍼 2010.09.14 9258
29 JBoss Application Server Port 일괄 변경 방법 총관리자 2010.06.16 8138
28 ipmate 2.1.1이 window7에서 레지스트리 읽기 오류발생시 해결 총관리자 2010.05.17 7576
27 JBoss Hot Deploy , 핫 디플로이 설정 구퍼 2009.10.19 7357
26 회사에서 원격 데스크탑 포트가 막혀있을때 구퍼 2010.09.13 6815
25 connection 반납하지 않는 프로그램 확인방법 하늘과컴 2007.10.30 5641
24 이클립스 웹로직 8.0 연동시 핫디플로이 박상현 2006.09.05 4984
23 라이브러리 링크정보를 보는 ldd 명령 원우석 2004.07.31 4812
22 servlet사용시 web.xml설정 내용 박상현 2007.03.08 4765
21 JBOSS IP접근문제 하늘과컴 2007.12.04 4694
20 문자열 조작명령어 원우석 2004.04.24 4083
19 linux에 jboss설치하기 구퍼 2011.01.06 4077
18 콘솔 없는 유닉스서버 IP 변경하는 방법 구퍼 2009.11.02 3713
17 jboss4.03에서 기본포트 80을 다른 포트로 변경하기 구퍼 2010.12.30 3497
16 Weblogic 8.1 에서 jsp 사용하기 박상현 2004.07.27 3477
15 jboss와 호환 jdk버젼 매트릭스 구퍼 2009.10.19 3285
14 유닉스 수행감시기(Profiler) : prof 원우석 2004.04.20 3004
13 ksh에서 리스트데이터를 차례대로 처리할때 원우석 2004.07.31 2967
» WebSphere의 document Root 운영자 2003.06.11 2936
위로