1. Overview

Application 배포 설명자 파일 (Deployment Descriptor) 의 구성 요소를 외부에서 변경하기 위한, Deployment Plan 의 간단한 사용 예시.

해당 방식을 사용할 시, 개발자에게 WebLogic의 구성 요소의 종속성을 탈피할 수 있다.




2. Descriptions

다음의 defaultApp

1
2
3
4
5
6
7
8
9
10
$ tree /sw/app/defaultApp
/sw/app/defaultApp
├── custom-error
│   └── 404.html
├── META-INF
└── WEB-INF
    ├── weblogic.xml
    └── web.xml

3 directories, 3 files


web.xml 에 다음으로 지정되어 있다.

1
2
3
4
5
6
<web-app>
 <error-page>
  <error-code>404</error-code>
  <location>/error/404.html</location>
 </error-page>
</web-app>


defaultApp에 존재하지 않는 Page를 호출하면, /error/404.html이 보여진다.


다음을 /sw/app/plan/plan.xml 으로 저장한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan">
 <application-name>plan</application-name>
  <variable-definition>
   <variable>
    <name>errorCode404</name>
    <value>404</value>
   </variable>

   <variable>
    <name>errorPage404</name>
    <value>/custom-error/404.html</value>
   </variable>
  </variable-definition>

 <module-override>
  <module-name>defaultApp</module-name>
  <module-type>war</module-type>
  <module-descriptor external="true">
   <root-element>web-app</root-element>
   <uri>WEB-INF/web.xml</uri>

   <variable-assignment>
    <name>errorCode404</name>
    <xpath>/web-app/error-page[error-code='404']/error-code</xpath>
   </variable-assignment>

   <variable-assignment>
    <name>errorPage404</name>
    <xpath>/web-app/error-page[error-code='404']/location</xpath>
   </variable-assignment>
  </module-descriptor>
 </module-override>
 <config-root>/sw/app/plan</config-root>
</deployment-plan>


defaultApp이 이미 WLS에 배포가 되어 있던, 신규 배포를 하던간에 plan.xml을 다음의 명령어로 적용할 수 있다.

1
2
3
4
5
6
java weblogic.Deployer \
 -adminurl t3://<ADMIN_URL> \
 -user <USERNAME> -password <PASSWORD> \
 -deploy -name defaultApp \
 -source /sw/app/defaultApp \
 -plan /sw/app/plan/plan.xml


이제, defaultApp은 HTTP 404 Found 시에 /custom-error/404.html 을 보여준다.




3. References

4 Configuring Applications for Production Deployment