2010년 2월 4일 목요일

jeus auto reload Q/A 모음

수정된 서블릿 파일을 반영시키기 위해서는 위에서 처럼
(1) 해당 context에 AutoReload='true'로 세팅을 해두시던가,
(2) AutoReload='false'일 경우 webadmin이라는 console 툴을 이용해서
>reload    [ContextGroup] [Context] [Servlet] :  reload elements
하시면 됩니다.

그리고 현재 Context에 대한 세팅이 제대로 되어 있는지(AutoReload='true')를
체크하시기 위해서는 webadmin 으로 login하신 후
>cfg -c:컨텍스트명 명령을 해보시면 현재 Context의 세팅 상태를 알 수 있습니다

 

 

Jeus32\classes에는 유저가 개발한 소스를 두는 위치가 아님니다.
시스템 클래스만 두는 것입니다.
그 결과는 당연합니다.

E:\Jeus32\webhome\servlet_home\webapps\ping\WEB-INF\classes
에 두고 사용하시는것이 맞습니다.

만약 해당 클래스가 package성 프로그램이고
reload대상이 아니라면

$JEUS_HOME/lib/application에 두고 사용하시면 됩니다.

수고하세요.

 

 

님께서 현재 제우스 manager를 이용해서 셋팅을 하시는지 아니면
그냥 텍스트 모드로 하시는지 모르겠지만
간단하게 텍스트 모드 방법을 가르쳐 드리겠습니다.
그리고 기본적인 제우스 셋팅이라 보고 말씀 드리겠습니다.

Java Bean 파일을 자동으로 auto reload 하기 위해서는

※노드명은 콘솔창에서 hostname으로 확인할수 있습니다.
ex] c:\hostname

(tag를 넣으면 제대로 보이지 않기 때문에 .을 삽입 했습니다.)

1. java Bean Auto-reload
제우스 설치 폴더 -> config 폴더 -> 노드명폴더 -> 노드명_servlet_engine1 ->
jeus-web-dd_examples.xml 파일을 편집기(ultra edit, edit plus등)으로
열어 봅니다.
<.jeus-web-dd>
   <.context>
       <.context-name>Examples</context-name>
       <.docbase>examples</docbase>
       <.auto-reload>
           <.enable-reload>true</enable-reload>
           <.check-on-demand>true</check-on-demand>
       <./auto-reload>
   <./context>
<./jeus-web-dd>

위에 보시면 <.auto-reload> ~ <./auto-reload>를 그대로 복사 하셔서 넣어 주시면 됩니다.

 


>  > % http.m
>  > -------------
>  > *NODE
>  > hanuhm    
>  >              WEBTOBDIR="D:/Jeus40/webserver",
>  >            SHMKEY = 54000,
>  >            DOCROOT="D:/STLS/webapps",
>  >             PORT = "8080",
>  >
>  > % WEBMain.xml
>  > --------------
>  > < context >
>  >     < context-name >default< /context-name >
>  >     < context-path >/etls< /context-path >
>  > </context>
>  >
>  > % jeus-web-dd_default.xml
>  > ------------------------
>  > < jeus-web-dd >
>  >     < context >
>  >         < context-name >default< /context-name >
>  >         < docbase > < /docbase >
>  >         < auto-reload>
>  >             < enable-reload >true< /enable-reload >
>  >             < check-on-demand >true< /check-on-demand >
>  >          < /auto-reload >
>  >     < /context >
>  > < /jeus-web-dd >

 

BEANS는 컨텍스트 아래의 WEB-INF/classes 에 패키지 형태로 두거나

모든 컨텍스트에서 참조 가능하도록 JEUS_HOME/lib/application에 두는 것이

일반적입니다. OS 환경 CLASSPATH는 제우스에서 사용하지 않습니다.

다음과 같이 컨텍스트가 올바르게 등록되어있는지 확인해 보세요..

1) OS 환경설정 SERVLET_HOME 값 확인
2) WEBMain.xml의 <group-docbase> 값 확인
3) jeus-web-dd_컨텍스트명.xml의 <docbase> 값 확인

그러면 다음과 같이 컨텍스트의 절대경로를 얻을 수 있습니다.

4) SERVLET_HOME/group-docbase/docbase

결로적으로 jsp는 4)의 경로에 두고 사용하며 서블릿 혹은 빈즈는

5) SERVLET_HOME/group-docbase/docbase/WEB-INF/classes

에 두면 JSP에서 참조할 수 있습니다.

만약, 제우스가 4.2 버전 이상이라면 1) 설정은

JEUS_HOME/bin/jeus.properties에 등록되어 있습니다.

참고로, WEBMain.xml의 <servlet-home> 값이 설정되었다면

SERVLET_HOME 환경변수 값은 무시됩니다.. 즉, <servlet-home> 값이

우선 적용됩니다.


서블릿은 5) 경로에 두고 web.xml에 SerlvetRoot를 설정하면

"http://주소:포트/컨텍스트패스/servlets/서블릿명"

로 호출할 수 있습니다.

자세한 샘플과 설정은 매뉴얼을 참고하세요..

 

 


클래스페스가 설정된 곳에 실제로 그 클래스가 없는 것입니다.
참고로 jeus는 외부의 classpath를 쓰지 않습니다.
따라서 공통클래스의 경우 jeus_home/lib/application에 놓고 쓰고
추가 적인 classpath는 JEUSMain.xml에 user-classpath를 사용해서 추가 해서 사용 합니다.

 

 


> <EngineContainer>
>     <Name>container1</Name>
>     <CommandOption/>
>     <SequentialStart>false</SequentialStart>
>     
>      <UserClassPath>C:\home1\nafis\lib</UserClassPath>

 

 


JeusMain.xml에서 [UserClassPath] 태그를 사용하여 클래스패스를 명시해 준 경우에 이런 현상이 발생합니다.
현재 프로젝트에서 [UserClassPath] 태그를 반드시 사용해야 하는 상황이며,  사용하는 CONTEXT 에만 영향을 줘야하는 상황이어서  C:\Jeus33\lib\application 에 놓고 쓸수 있는 상황이 아닙니다.
CONTEXT 밑에 WEB-INF/LIB에 jar를 놓고 사용할 경우 servlet에서 안되는데. jsp에서는 인식을 하니... jsp로 바꾸어 해결했습니다.
문제는 프레임웍에서 제공하는 트랜젝션을 하나도 사용 못한다는거죠...

 

만약 그렇다면 UserClassPath를

추가하고자 하는 디렉토리에 마지막 부분에 \를 추가 해보시겠습니까..?

예를 들자면

c:\temp => c:\temp\

 

 

container.xml에서 해당 Context 엘리먼트의 속성으로 AutoReload="true"로 설정되어있습니다.

 

댓글 없음:

댓글 쓰기