IT/개발

[WebLogic] 서버업로드 했는데 반영이 되지 않는경우

알콩달콩아빠 2024. 9. 6. 20:54
728x90
반응형

이번에 WebLogic Server 를 처음 접하였는데

 

Application(JSP,XML,CLASS 등)을 업로드 햇는데 반영 (complie)이 되지않았다.

 

서버를 재가동해도 마찬가지였고 JSP,JS 조차도 반영이 되지않아 당황했었다..

 

알고보니 weblogic 에는 stage 모드 라는것이 있었고

 

또 여러가지 경우의 수가 많다하니 참고가된 것을 공유하고자한다.

 

 

1. 파일 확인 ( JDK 버전, 파일 Byte, 파일네임 ete..) 

 

2.  브라우저 캐쉬 삭제

 

3. 개발 /운영 모드 확인

 

   WebLogic

   

   도메인은 개발자/운영 모드 총 2가지로 가능함

 

  확인방법

 

      - WebLogic기동시에 nohup로그를 확인

 

      - $DOMAIN_HOME/bin/setDomainEnv.sh 에 PRODUCT_MODE 확인

 

  default로 운영모드는 Auto deployment 및 hot deployment를 지원하지 않음

 

 weblogic.xml 을 확인 (운영모드는 명시 개발 모드도 가급적 사용)

 

 

 

4. no-stage 모드 확인

 

배포 방법에는 세가지가 있다. 

 

stage / no-stage / external-stage mode 

 

stage : 보통 원본소스 보호 목적으로 weblogic이 stage란 폴더를 만들어 복제하여 서비스

 

no-stage : 다이렉트로 소스폴더를 보고 있음.

 

external-stage : stage 모드와 일치하나 서버가 자동으로 copy 하지않고 deploy 전에 수동으로 직접 진행해주어야함

 

 

 

 

 구분  기본 동작  적용의 예
 Stage Mode  * Admin에 deploy 된 application을 managed server directory로 copy해서 deploy


* Server가 Start up 될 때마다 일일이 복사함
 - start up 시간이 느려진다
 - managed server가 많을수록 오랜 시간이 소요
* Application size가 작은 경우
* Managed server가 적은 경우
 Nostage Mode  * Box 별로 Application을 copy하고 deploy한다
 * Admin Server, Managed Server 모두 같은 application에 직접 접근
 * Application 변경 시, admin server가 자동으로 감지 & refresh
* Application size가 큰 경우
* 동적인 update가 필요한 경우 
 External-Stage Mode  * Stage mode와 유사 동작
* local copy를 통해 target server 들의 deploy가 이뤄짐
* server가 deployment file을 자동으로 copy하지 않음
* deploy 전에 각각의 stage directory에 copy해야 함
* Target server에 수동적으로 분산 deploy 경우
* Application의 동적인 update를 요구하지 않을 경우 

 

 

 

 

확인은 다음과 같이 WebLogic 콘솔 (http://ip주소:admin포트/console)에 접속 하셔서

 

왼쪽메뉴에 배포(deployment) -> 해당 Application클릭을 통해 아래와 같이 확인합니다.

 

 stage모드라면 Application을 비활성화 시키고 업데이트 후 다시 활성화 시켜 주시거나 재배포 하셔야 합니다.

 

 

 

 

 

5. weblogic.xml 설정을 안다? 그럼 clear!

 

 

 

 

응용프로그램이 weblogic 환경에서 작동할 옵션을 설정 weblogic.xml

 

그래서 Application 하나당 고유한 weblogic.xml 하나를 가지고 있으며 

 

 

 

 

 

<jsp-descriptor>

 

   <page-check-seconds>10</page-check-seconds>                        //jsp의 페이지를 10초마다 체크

 

</jsp-descriptor>

 

 

 

<container-descriptor>

 

   <servlet-reload-check-secs>10</servlet-reload-check-secs>          //servlet,class를 10초마다 체크

 

   <resource-reload-check-secs>10</resource-reload-check-secs>     //xml등 리소스파일를 10초마다 체크

 

</container-descriptor>

 

  

 

시간은 넉넉히 조정해줘야함 개발은 상관없으나 운영 같은 경우 넉넉히 잡아주는게 좋다. 

 

 

 

 

 

6. 페이지를 호출시 log상에 컴파일 에러 확인

 

 

페이지 호출시 다음과같은 log가 찍히기도함

 

weblogic.servlet.jsp.CompilationException: Failed to compile JSP test.jsp

 

 

이런 경우 크게 두가지 문제가 있을 수 있습니다.

 

  - 소스 문제로 컴파일이 되지 않음

 

  - JAVA 컴파일러가 고장남

 

 

첫번째의 경우 해당 로그를 확인하시고 소스를 수정해주시면 됩니다. 

 

간혹 "test 및 로컬에서는 잘되는데 왜 서버에서는 컴파일이 안되나요?" 라는 질문이 오기도 합니다.

 

이럴 경우 Server환경과 테스트 환경의 차이점도 확인해주세요~ (WebLogic 고장 아닙니다 ㅠㅠ)

 

 

 

7. 그래도 안되면 임시파일을 삭제

 

WebLogic은 jsp페이지를 컴파일하여 class파일로 적재해놓음.

 

경로는 $DOMAIN_HOME/servers/[서버이름]/tmp/_WL_user/[앱이름]/[랜덤]/jsp_servlet

 

위에 보시면 아마도 원래의 페이지의 class파일을 찾으실 수 있습니다.

 

 

8. 배포 예시

 

   - weblogic 관리 콘솔 접속 http://ip/console

 

  - 좌측메뉴 > Domain Structure > [Deployments] > 좌측 상단 [Lock & Edit] > webapps  또는 webroot  Check > [Update] > [Next] > [Finish]

     > 좌측 상단 [Activate Changes] 클릭 후 약 1~2분 소요되며 이 때 Site는 Service Unavailable 표시되나 Weblogic Process(2개) 자체가 재시작되지는 않음

(ps -ef | grep java | grep Domain로 확인), 

     > 좌측 상단 [Release Configureation] > 종료

 



 

▲ domain home의 stage mode를 설정한 폴더에 test_new 파일을 생성하였다.

 

 










▲ 변경 사항이 생기면, 갱신을 통해 변경 내용을 활성화 활 것





 

 

▲ test_new 파일이 stage mode를 통해 ManagedServer_1에도 자동생성 되었다.

 

출처 : [WebLogic] 서버업로드 했는데 반영이 되지 않는경우 (tistory.com)

728x90
반응형