이번에 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에도 자동생성 되었다.
'IT > 개발' 카테고리의 다른 글
WebLogic 11g 기동시 JAVA OPTION 넣기 (0) | 2024.09.06 |
---|---|
최신 JDK 업데이트로 URL 프로토콜 예외 해결 (0) | 2024.09.06 |
FreeRadius OTP 인증 서버 만들기 (0) | 2024.05.24 |
[ESXi] - 메모리 정보 확인 (0) | 2023.11.28 |
연결할 때 정의되지 않은 참조 문제를 해결하는 방법 __gcov_init (0) | 2023.11.11 |