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

2019. 11. 20. 13:49
반응형






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







이번에 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에도 자동생성 되었다.











※참고

http://blog.naver.com/PostView.nhn?blogId=ailov&logNo=60185838900&parentCategoryNo=1&categoryNo=&viewDate=&isShowPopularPosts=true&from=search


https://m.blog.naver.com/PostView.nhn?blogId=wlguswls89&logNo=220569785519&proxyReferer=https%3A%2F%2Fwww.google.com%2F




 

반응형

BELATED ARTICLES

more