본문 바로가기
728x90
반응형

Web.xml 파일은 웹서버 환경 설정 정보를 가지고 있다.
기본적으로 display명, 서블릿 매핑 정보, 각종 참조 정보등을 가지고 있고, 필요에 따라 설정을 추가한다.
별도의 관리화면이 없기에 직접 파일을 열어 수정을 해줘야한다.
모든 서블릿컨테이너나 WAS에 존재한다.

Weblogic.xml 은 웹로직 서버 환경 설정 정보를 가지고 있다.
Ejb 정보, jdbc, jsp 관련 설정 정보 등을 가지고 있고, ejb를 추가하거나 jdbc정보를 등록할 경우, jsp 세션 설정을 변경할 경우 수정해줘야 한다. 개발환경에 따라서 필요에 따라 수정을 해줘야 하지만 weblogic 6 이후로 웹상에서 가능한 관리화면이 있기때문에  weblogic.xml 파일을 직접 열어서 수정하지 않아도 된다. 그러나 weblogic.xml 볼일이 가끔 있다.

Weblogic에서만 존재한다.

 

Web.xml

Deployment Descriptor 로 각 어플리케이션의 환경을 설정하는 부분을 담당한다.

WAR 파일이 패키지 될 때 같이 포함되며, root dir 밑 /WEB-INF dir에 위치한다.
주요한 역할으로 Deploy할 때 Servlet의 정보 설정, 브라우저가 Java Servlet에 접근하기 위해 WAS에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할 수 있는데, 이 정보를 지정할 수 있다.

(배포할 Servlet이 무엇인지, 해당 Servlet이 어떤 URL에 매핑되는지 )

Web.xml 의 기본적인 형식은 다음과 같다.

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
…
<!-- 내용 -->
…
</web-app>


내용 안에 들어갈 내용들을 몇가지 살펴보면,

 <!-- 1. aliases 설정 -->
    <servlet>
        <servlet-name>welcome</servlet-name>
        <servlet-class>servlets.WelcomeServlet</servlet-class>
    </servlet>

    <!-- 2. 매핑 -->
    <servlet-mapping>
        <servlet-name>welcome</servlet-name>
        <url-pattern>/welcome</url-pattern>
    </servlet-mapping>



1. Aliases 설정
  - 서블릿 이름을 실제 서블릿 클래스에 연결

  - <servlet-name> welcome </servlet-name> : 후에 서블릿 매핑설정값과 반드시 같아야 한다. (값 : 'welcome')
  - <servlet-class>servlets.WelcomeServlet </servlet-class> 은 개발자가 작성한 실제 클래스 이름으로 설정 해야 한다.

    ([패키지이름].[서블릿클래스이름] )


2. 매핑
  - URL을 서블릿 이름에 연결한다.
  - <url-pattern>/welcome</url-pattern>은 클라이언트 (browser)의 요청 URL에서 어플리케이션 이름 뒤에 오는 부분으로

    / 로 시작해야 한다.

-> 이를 이용하면 URL 마다 다른 서블릿을 매핑하여 기능별 요청을 별도로 처리할 수 있다.

 


추가로 스프링 프레임워크에서 사용하는 몇가지 내용을 보면,

<servlet>
  <servlet-name>salesServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- contextLoader가 해당 위치의 설정 파일을 읽어, 해당 파일을 dispatcher servlet으로 만든다. -->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/salesServlet-servlet.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<!-- /sales로 시작하는 url 요청을 받아 salesServlet에서 처리한다. -->
<servlet-mapping>
  <servlet-name>salesServlet</servlet-name>
  <url-pattern>/sales</url-pattern>
</servlet-mapping>


- <init-param> ~ </init-param> 부분은 생략이 가능
○ <servlet-name>에 설정한 이름인 *-servlet.xml 형식으로 파일 이름을 만들고, web.xml과 같은 위치에 있어야 (WEB-INF 아래) contextLoader가 해당 파일을 찾아 읽을 수 있다.
○ 위와 같이 설정하면 init-param으로 dispatcher.xml파일의 이름을 따로 설정하지 않아도 자동으로 로드 된다. 


 아래와 같이 등록된 설정 파일에 따라 등록된 Bean들은 모두 공유가 가능하다.

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/service-context.xml
    /WEB-INF/dao-context.xml
  </param-value>
</context-param>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>




• ContextLoaderListener 
○ Controller가 공유하는 Bean들을 포함하는 Spring Container를 생성한다. ( DataSource, DAO, Service )
○ 각 Bean 에 관한 설정 파일을 따로 생성한다. 
   - Service-context.xml, dao-context.xml, applicatioinContext.xml, security-context.xml 등등… (통합하여도 되긴 함)
• DispatcherServlet에 의해 생성 된 Bean은 ContextLoaderListener에 읳 생성된 Bean을 참조할 수 있다. (상단 코드 참조)

그 외 필터 등 다양한 값들이 있다.

 

Weblogic.xml

Weblogic(WAS) 담당자라 web.xml 은 거의 볼일이 없고 주로 weblogic.xml을 보게되는데,

이 Weblogic.xml 도 web.xml 과 같은 곳에 위치한다.

 

 

Weblogic.xml 의 기본 형식

 

<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app>
	…
	<!-- 내용 -->
	…
</weblogic-web-app>

 

 

• <context-root> [컨텍스트루트] </context-root>
웹 어플의 컨텍스트 루트를 지정하며 WebLogic 에서 배치 시 웹어플리케이션 명이 기본적으로 context-root로 지정됨
<context-root>/</context-root> 는 컨텍스트루트를 / (root)로 지정하는 방법.

• <description> : 웹어플리케이션에 대한 설명
• <weblogic-version> : weblogic.xml 의 weblogic 버전 정보(단순 정보)

• <session-description>
  ○ <timeout-secs>[시간초]</timeout-secs> : 세션 타임아웃. Web.xml 의 지정된 설정이 우선시되고 없을경우 웹로직
      Web.xml의 타임아웃은 '분' 단위 이다.
   ○ <invaildation-interval-secs>[주기]</invaildation-interval-secs> : 

      타임아웃 | invalid한 세션을 정리하는 주기(기본값 60초)
   ○ <sharing-enabled>[boolean]</sharing-enabled> : WebLogic 에서 사용하는 세션을 타 애플리케이션에 전달해 

      처리 후 다시 전달받는 형태의 경우를 허용할 것인지 여부를 설정. (9.0 이상 버전은 기본값이 false)
   ○ <cookie-name>[이름]</cookie-name> : Session tracking cookie 이름 (기본값 JSESSIONID)
   ○ <persistent-store-type> 종류 </persistent-store-type> 
      § Memory : session storage 지속 사용 해제
      § Replicated : memory와 같고, session data는 클러스터에 복제
      § Replicated_if_clustered : 웹 어플을 deploy할 때, session storage이 클러스터 서버에 복제 

         <!-- 클러스터 구성시 쿠키 유지 -->
      § Async-replicated : 비동기 세션 복제
      § Async-replicated-if-clustered : 활성화된 비동기 세션을 클러스 환경 웹 어플에 복제. 단일 서버에 배포시 세션

          지속성/복제는 memory로 기본설정
      § File : 파일 기본 지속성 사용
      § Async-jdbc 앱 내에서 HTTP 세션에 대한 비동기 JDBC 지속성 사용
      § Cookie : 모든 세션 데이터는 사용자 브라우저에 있는 쿠키에 저장
</session-description>

• <jsp-descripter>
   ○ <page-check-seconds>[시간초]</page-check-seconds> : JSP페이지에 수정이 발생하거나 타임스탬프가 갱신되는 경우 변경으로 인식해 변경 소스를 리로드 ( -1 값은 false : 안함, 0은 항상 리로드, 1이상은 해당 초 간격으로 체크 후, 기본값 -1)
   ○ <precompile> [boolean] </precompile> : true로 설정되면 ( 배포 시 | Weblogic 기동 시 ) 미리 컴파일 됨
   ○ <keepgenerated> [boolean] </keepgenerated> : JSP는 호출 시에 자바소스로 변경 된 후, 컴파일하는 클래스 형태가 만들어지는데 중간 과정인 자바 소스 파일을 생성 된 채로 유지할 것인지 설정 (기본값 false)
   ○ <working-dir> [dir 위치] </working-dir> : JSP를 컴파일하는 임시 디렉터리의 위치를 설정 
   (기본값 $DOMIAN_HOME/servers/[SERVER_NAME]/tmp/_WL_user/ 로 설정되어있음)
</jsp-descripter>

• <container-descriptor>
   ○ <servlet-reload-check-secs> [시간초] <servlet-reload-check-secs> : WEB-INF/classess를 대상으로 수정이 발생하거나 타임스탬프가 갱신되는 경우 변경을 확인해 리로드 하는 옵션. 초단위로 주기적인 확인을 한다. -1의 경우 false, 0은 항상, 1이상은 해당 초 단위로 확인
   ○ <resource-reload-check-secs> [시간초] </resource-reload-check-secs> : 위와 같으며 대상이 resource path 이다.
   ○ <prefer-web-inf-classes> [boolean] </prefer-web-inf-class> : CLASSPATH가 읽히는 순서는 OS -> JVM -> WLS -  APP 순으로 WEB-INF의 lib나 classess 하위 디렉터리가 가장 낮다. APP을 WLS보다 우선 클래스 로딩을 하기 위해 설정(true)
(기본값은 false)
   ○ <optimistic-serialization> [boolean] </optimistic-serialization> : true로 설정하면 getAttribute(name)호출 시에 serialize-deserialize를 생략하므로 성능에 최적화 됨
</container-descriptor>

728x90
반응형

'IT 공부 > Web-WAS' 카테고리의 다른 글

[WebLogic] 웹로직 11g 패치 방법  (0) 2024.05.15
[WebLogic] MBean 이란?  (0) 2024.05.05
[WebLogic] JTA (Java Transaction API)  (0) 2024.04.25
WEB-INF 구성  (0) 2024.04.21
[WebLogic] 웹로직 현재 패치버전 확인 방법  (0) 2024.04.19

한걸음 한걸음

개인적인 기록