내용 목차
본 장에서는 JEUS v7.0 릴리즈에서 추가된 새로운 기능에 대해 간략히 설명한다.
JEUS 7에서는 Java EE 6의 주요 기능인 Meta Annotation과 Dependency Injection을 완벽히 지원함으로써, 개발 생산성을 획기적으로 향상 시켰다. 또한 Java EE 6에서 향상된 여러 기술을 사용하여, 보다 안정적인 환경을 제공한다.
JEUS는 최신 버전 JEUS 7으로 발전하면서 많은 신기술과 새로운 스펙이 적용되었다. 특히 Java EE 6부터 추가된 Annotation을 완벽히 지원해서, 개발 생산성을 획기적으로 향상시켰다.
다음은 JEUS 5에서부터 JEUS 7에 이르기까지의 적용되는 J2EE 스펙을 간단하게 보여준다. 스펙의 내용에 따른 변경 사항에 대해서는 각각의 명시된 스펙을 참고한다.
Spec | JEUS 5 | JEUS 6 | JEUS 7 |
---|---|---|---|
J2EE | J2EE 1.4 | Java EE 5 | Java EE 6 |
WebServer | WebtoB 3.1.6 | WebtoB 4.1 | WebtoB 4.1 |
HTTP | 1.0/1.1 | 1.0/1.1 | 1.0/1.1 |
CGI | 1.1 | 1.1 | 1.1 |
PHP | 3.x/4.x | 3.x/4.x/5.x | 3.x/4.x/5.x |
SSL | ssl2/ssl3/tls1 | ssl2/ssl3/tls1 | ssl2/ssl3/tls1 |
EJB (Enterprise Java Beans) | 2.1 | 2.x/3.0 | 3.1 |
RMI-IIOP | 지원 | 지원 | 지원 |
JAF (JavaBeans Activation Framework) | 1.0.2 | 1.0.2 | 1.1 |
EJB to CORBA Mapping | 1.1 | 1.1 | 1.1 |
JCA (Java EE Connector Architecture) | 1.5 | 1.5 | 1.6 |
JMS (Java Message Service API) | 1.1 | 1.1 | 1.1 |
Common Annotations for the Java Platform | - | 1.0 | 1.1 |
JPA (Java Persistence API) | - | 1.0 | 2.0 |
JavaMail API | 1.3 | 1.4 | 1.4 |
JTA (Java Transaction API) | 1.0.1B | 1.1 | 1.1 |
JTS (Java Transaction Service) | 1.0 | 1.0 | 1.0 |
JNDI (Java Naming and Directory Interface) | 1.2.1 | 1.2.1 | 1.2.1 |
CDI (Contexts and Depency Injection for Java. Web Beans) | - | - | 1.0 |
Bean Validation | - | - | 1.0 |
Managed Beans | - | - | 1.0 |
Interceptors | - | - | 1.1 |
JSP | 2.0 | 2.1 | 2.2 |
Servlet | 2.4 | 2.5 | 3.0 |
JSF (JavaServer Faces) | - | 1.2 | 2.0 |
JSTL | - | 1.2 | 1.2 |
XSLT | 1.0 | 1.0 | 1.0 |
JDBC | 3.0 | 3.0 | 4.0 |
IBM MQ | 지원 | 지원 | 지원 |
Sonic MQ | 지원 | 지원 | 지원 |
J2EE Management | 1.0 | 1.1 | 1.1 |
J2EE Deployment API | 1.1 | 1.2 | 1.2 |
JAAS | 1.0.1 | 1.0.1 | 1.0.1 |
JACC | 1.0 | 1.1 | 1.3 |
JASPIC | - | - | 1.0 |
Implementing Enterprise Web Services | 1.0 | 1.2 | 1.3 |
WS-I Basic Profile | 1.0 | 1.1 | 1.1 |
WS-Security | 1.0 | 1.0/1.1 | 1.1 |
WS-Reliable Messaging | - | 1.0 | 1.1 |
WS-Transaction | - | - | 1.0 |
WS-Addressing | - | - | 1.0 |
SOAP | 1.2 | 1.2 | 1.1/1.2 |
WSDL | 1.1 | 1.1 | 1.1 |
Web Service Metadata | - | 2.0 | 2.1 |
SAAJ | 1.1/1.2 | 1.3 | 1.3 |
UDDI | 2.0/3.0 | 2.0/3.0 | 2.0/3.0 |
JAX-RPC | 1.1 | 1.1 | 1.1 |
JAX-WS | - | 2.1 | 2.2 |
JAX-RS | - | - | 1.1 |
JAXR | 1.0 | 1.0 | 1.0 |
JAXB | 1.0 | 2.1 | 2.2 |
JAXP | 1.2 | 1.3 | (JavaSE 6에 포함) |
WS-Policy | - | 1.0 | 1.0 |
WS-Security Policy | - | 1.2 | 1.2 |
WS-Trust | - | 1.3 | 1.3 |
WS-Secure Conversation | - | 1.3 | 1.3 |
WS-Policy Attachment | - | 1.0 | 1.0 |
StAX (Streaming API for XML) | - | 1.0 | (JavaSE 6에 포함) |
OTS | 지원 | 지원 | 지원 |
Java IDL API | 지원 | 지원 | 지원 |
IDE Tool | 지원 | 지원 | 미지원 |
GUI Tool | JEUSBuilder | 미지원 | 미지원 |
Web Tool | WebAdmin | WebAdmin | WebAdmin |
Monitoring Tool | Console Tool, WebAdmin | Console Tool, WebAdmin | Console Tool, WebAdmin |
JDK | 1.4/5.0 | 5.0/6.0 | 6.0(인증) |
도메인 구조 도입
최대 관리 단위가 노드에서 도메인으로 확장되었다.
매니저 하나와 여러 개의 컨테이너로 구성되었던 노드가 최소인 동시에 최대의 관리 단위였으나, 여러 개의 서버로 구성된 도메인이 최대 관리 단위가 되었다.
도메인 내에는 여러 서버를 관리하는 DAS(Domain Administration Server)라는 특별한 서버와, 실제 애플리케이션을 서비스하는 서버인 MS(Managed Server)가 포함된다. 자세한 내용은 “JEUS Domain 안내서”의 “제1장 소개”를 참조한다.
Console 명령어 통합
기존의 모든 console 명령어가 jeusadmin 으로 통합되었다. 자세한 내용은 "JEUS Reference Book"을 참조한다.
설정 통합
시스템 프로퍼티나 여러 개의 설정 파일로 흩어져 있던 설정을 domain.xml로 통합하였다. 따라서 jeusadmin이나 WebAdmin으로 모든 설정이 변경 가능하게 되었다.
서버 JVM에 적용하고자 하는 설정들도 domain.xml로 통합되면서 xml로 부터 JVM Option을 읽어 서버 JVM에게 넘겨주는 Launcher라는 임시 프로세스가 도입되었다. 자세한 내용은 “JEUS Server 안내서”의 “1.6. Launcher”를 참조한다.
디렉터리 구조 변경
도메인 구조 도입과 설정 통합으로 인해 디렉터리 구조가 변경되었다. 자세한 내용은 “JEUS Server 안내서”의 “1.5. 서버 디렉터리 구조”를 참조한다.
서버의 lifecycle 변경
STANDBY 상태와 SUSPENDED 상태가 추가되었다.
STANDBY 상태란 시작 중에 등록된 애플리케이션을 Distribute하던 중 실패한 것이 있어 'RUNNING' 상태로 이동하지 못하고 머무르는 상태이며, SUSPENDED 상태는 관리자가 의도적으로 모든 애플리케이션을 정지하도록 Suspend를 수행한 상태를 말한다. 자세한 내용은 “JEUS Server 안내서”의 “3.1.1. Managed Server의 Lifecycle”을 참조한다.
서버 비정상 종료시 SSH를 통해 재시작
도메인 구조가 도입되면서 같은 머신에 있던 매니저가 컨테이너를 재시작시켜주는 범위에서 벗어나 다른 머신에 존재하는 서버를 DAS가 재시작시켜줄 필요가 생겨 SSH를 이용하는 재시작 기능이 추가되었다.
엔진별 시작/종료 제한
애플리케이션을 제대로 서비스 하기 위해서 필요한 엔진 서비스를 사용자가 판단하여 시작하거나 종료하는 것 보다 서버가 필요한 엔진 서비스를 시작/종료하도록 변경되었다.
설정 자동 동기화
새로 추가된 도메인 범위내에 각 서버들의 설정이 자동으로 동기화된다.
JEUS 6까지는 클러스터 내 노드들이 같은 설정을 가지기 위해 수동으로 설정을 동기화시켜야 되었지만 JEUS 7은 DAS가 클러스터 뿐아니라 도메인 범위내 모든 서버의 설정을 자동으로 동기화시켜준다. 자세한 설명은 “JEUS Domain 안내서”의 “1.3. 구성요소”를 참조한다.
동적 설정 변경 기능 추가
JEUS 6까지는 설정을 변경한 후 이를 적용하기 위해서는 해당 노드를 재시작해야 했다. JEUS 7에서는 서버의 재시작 없이 변경한 설정이 실시간으로 적용이 가능하다. 자세한 설명은 “JEUS Domain 안내서”의 “제3장 도메인 설정변경”을 참조한다.
모니터링의 최대 단위 확장
JEUS 6까지 하나의 노드씩 모니터링을 따로 해야했으나 JEUS 7에서는 도메인 또는 클러스터 단위로 여러 서버의 모니터링을 한 번에 가능해졌다.
Thread Pool 통합
서버 내에서 서비스별로 각각 사용하던 Thread Pool 을 하나도 통합함으로써 Thread의 재사용율을 높이고, 또한 중요한 서비스가 다른 서비스로 인해 Thread를 할당 받지 못하는 경우를 대비하여 일정 개수를 먼저 점유할 수 있는 기능이 추가되었다.
DAS (Domain Admin Server), MS (Managed Server)의 도입
JEUS 7부터는 manager, container의 개념이 사라지고 Domain 구조가 도입되었다.
JEUS 6에서는 JEUS Manager와 Engine Container가 한 머신 안에서 관리가 되어야 했지만 Domain 구조를 도입하여 그러한 제약사항이 없어지면서 Domain을 관리하는 Server로 DAS를 도입하였다.
JEUS 6의 Engine Container와 같이 실제 Application Service를 수행하는 Server는 MS라 한다. DAS도 Application Service를 수행할 수 있으나 권장하지는 않는다.
DAS는 Domain을 관리하기 때문에 MS의 서비스 외에 추가된 여러 서비스를 제공한다. 이러한 DAS와 MS의 서비스의 자세한 내용은 “JEUS Server 안내서”의 “1.2. Domain Administration Server(DAS)”,“JEUS Server 안내서”의 “1.3. Managed Server(MS)”를 참조한다.
Launcher 도입
JEUS 7부터 DAS와 MS server 모두 launcher를 통해 기동하게 된다.
JEUS 6 까지는 JEUS Manager, Engine Container 가 물리적으로 같은 머신에 있어야 하는 제약이 있었으나 JEUS 7부터는 그러한 제약이 사라지게 되었고, Launcher에서 Remote DAS의 설정 파일을 받아와서 Server를 구동시키게 된다. 자세한 내용은 “JEUS Server 안내서”의 “1.6. Launcher”를 참조한다.
Server의 State 관리 강화
JEUS 6보다 Server의 State를 자세하게 관리하고 jeusadmin과 WebAdmin을 통해 사용자가 현재 State에 맞는 Action을 취할 수 있다. 자세한 내용은 “JEUS Server 안내서”의 “제3장 JEUS 서버 제어 및 모니터링”을 참조한다.
도메인 구조 도입
JEUS 7에는 도메인 개념이 적용되어 여러 클러스터 및 수 많은 서버들을 통합적으로 관리할 수 있다. 도메인을 관리하는 서버를 DAS라고 하며, 실제 애플리케이션을 서비스하는 서버를 MS라고 한다.
JEUS를 설치하면 기본 도메인이 생성되고 DAS가 설정되며, 필요에 따라 도메인을 추가하거나 MS를 추가하여 사용하도록 한다.
구조 변경에 따라 디렉터리 구조도 변경 되었으며, 도메인 구조에 대한 자세한 내용은 "JEUS Domain 안내서"를 참고한다.
도메인 설정 변경
도메인의 모든 설정은 관리의 주체인 DAS를 통하는 것을 기본으로 한다(XML을 직접 편집하는 것과 같이 DAS를 통하지 않은 설정 변경의 경우 정상 동작하지 않을 수 있음에 주의한다).
동시에 여러 명이 같은 설정을 편집하는 것을 막기 위해 DAS를 통하여 설정을 변경할 때에는 LOCK을 얻어서 진행하도록 한다. 자세한 내용은 “JEUS Domain 안내서”의 “제3장 도메인 설정변경”을 참고한다.
서버 상태 관리 및 제어
도메인에 속한 MS는 DAS를 통해 상태를 확인하고 서버를 종료하거나 시작하는 등의 제어가 가능하다. 자세한 내용은 “JEUS Domain 안내서”의 “제4장 서버 Lifecycle”을 참고한다.
노드 매니저
DAS가 SSH를 이용하여 MS를 실행할 수 있도록 하는 기능이다.
사전에 MS가 부팅되는 머신에 개인키를 이용한 SSH 접속이 가능하도록 설정되어 있어야 하며, 관련 정보를 DAS가 알 수 있도록 설정해 주어야 한다.
설정이 완료된 MS는 DAS에 명령을 내려 간편하게 부팅할 수 있게 되며, MS가 비정상 종료될 경우 DAS가 이를 감지하여 다시 부팅을 시도하게 된다.
Graceful undeploy / redeploy 지원
undeploy 명령 중에 이미 처리중인 요청이 있으면 요청 처리를 완료하고 undeploy를 진행할 수 있는 Graceful undeployment 지원한다 (다양한 옵션 제공)
이미 디플로이한 애플리케이션을 서비스 중단없이 업그레이드를 해주는 Graceful redeployment 지원한다. Standalone Web Module에 한해서만 Graceful redeployment 기능을 지원한다.
DAS를 통하여 domain 환경의 deployment 관리
application을 DAS로 upload하는 install 기능을 지원한다.
영구 디플로이(persistent deploy)를 기본으로 한다.
Application에 ID 를 부여해서 Domain 내의 유일성을 보장한다.
Managed Server에서는 DAS로부터 application file을 동기화 한다.
Application Library를 Domain 별로 설정(DOMAIN_HOME/lib/application) 가능하게 한다.
DAS로 Application을 Install하지 않아도 deploy할 수 있도록 Domain에 Application Repository를 추가하는 기능을 지원한다.
Deploy 시 Absolute path를 주고 deploy할 수 있도록 하는 기능을 지원한다.(개발시점의 편의를 위해 지원하는 기능으로, 운영 환경에서는 사용을 권하지 않는다)
Cluster를 Target으로 deploy 기능을 지원한다.(All Target을 선택할 경우, DAS에도 Application이 Deploy되고, 명령에 일부 제약이 있으므로 운영환경에서는 사용을 권고하지 않는다)
Application의 Start/Stop이 실패한 경우 DAS에서Start/Stop 작업을 재시도한다.
Deployment image 재활용
Boot-time Deploy시 Packaged Application이 변경되지 않은 것으로 확인되면 이전 Deployment image를 재활용한다.
WebAdmin 은 전체적으로 신규개발 되었다.
JEUS 7 Domain 구조 및 설정 변경 적용
Domain 구조에 적합하게 모든 화면이 새로 작성되었다.
Lock & Edit 지원
Lock & Edit를 통한 편집 및 동적 변경을 지원한다.
Web Console을 통한 console 명령 사용
Web Console 기능을 통해서 jeusadmin의 일부 명령을 WebAdmin에서 바로 사용이 가능하다.
온라인 도움말 변경
JEUS Manaual을 WebAdmin 상에서 확인이 가능하고 관련 페이지에 대한 매뉴얼을 직접 참고할 수 있다.
New Specification
JEUS 7 Web Engine은 새로은 Specification으로 Java Server Faces 2.0 (JSR314), Java Server Faces 2.1, Servlet 3.0(JSR315), JSP 2.2(JSR245), Expression Language 2.2(JSR245), Contexts and Dependency Injection for the Java EE paltform(JSR299), Dependency Injection for Java(JSR330)을 지원한다.
JSP Graceful Reloading
NAS나 Remote 장비에 exploded 모드로 deploy하여 여러 웹 엔진에서 이를 공유하여 동일한 서비스를 수행하는 경우, 부하상황에서 JSP가 수정되었을 경우, JSP 컴파일로 인한 Hang이 발생할 가능성이 있다. 이 Hang 현상을 최소한으로 줄이기 위하여 한 웹 엔진에서만 변경된 JSP를 컴파일하고, 나머지 웹 엔진은 컴파일이 끝날 때까지 기존의 컴파일된 것으로 서비스를 제공하는 기능이 추가되었다. 자세한 설명은 “JEUS Web Engine 안내서”의 “4.3.1. JSP 리로딩”을 참조한다.
WEB-INF/lib/*.jar!META-INF/resources 지원
WEB-INF/lib/ 아래에 있는 jar 파일 중 META-INF/resources에 해당하는 내용들만 서버내부에 별도의 위치에 압축을 풀어놓고 해당 리소스를 서비스한다. ServletContext API에 정의한 대로 getRealPath(), getResource(), getResourcePaths() API를 통해서 리소스를 얻을 수 있다. 이 기능은 jsp, image 등도 라이브러리로 제공하기 위한 것이다.
개발 타임 Servlet Class HotSwap
웹 애플리케이션 개발 시 Servlet 클래스의 변경이 자주 일어날 경우, 이 클래스를 반영하기 위해서 웹 애플리케이션을 재배치할 수 있으나, 이 과정은 웹 애플리케이션의 undeploy와 deploy가 일어나는 것이라 시간이 걸린다. 이와 같은 작업이 반복될 경우 이 시간들의 합이 무시할 수 없게 된다. 이 시간을 줄이고자 JEUS 7에서는 간단한 Servlet 클래스의 변경의 경우 웹 엔진에서 변경된 Servlet 클래스만을 동적으로 반영해주는 기능을 제공한다. 이 기능은 모든 형태의 변경에 대하여 지원되는 기능이 아니므로 제약사항을 확인해서 사용해야하고, 운영환경에서는 사용하지 말아야 한다.
자세한 설명은 “JEUS Web Engine 안내서”의 “제9장 클래스 동적 반영”을 참조한다.
웹 공격 대응 기능
DDOS와 같은 웹 애플리케이션에 대한 악의적인 공격이 있을 경우에 대비하여, 시스템 관리자가 이들 공격에 대하여 웹 엔진에서 대응을하여 안정적인 서비스를 할 수 있는 기능을 제공한다.
크게 다섯 가지 방법으로 웹 공격에 대하여 대응할 수 있는 기능을 추가하였다.
Post data size의 제한
GET/POST 요청에 포함된 Parameter의 갯수를 제한
요청에 포함된 Header의 갯수를 제한
Header 하나의 사이즈 제한
Query String의 사이즈 제한
자세한 설명은 “JEUS Web Engine 안내서”의 “1.6.13. 웹 공격 대응 설정”을 참조한다.
Graceful Redeployment of Standalone Web Module
현재 서비스 중인 애플리케이션의 중단없이 새로 redeploy한 애플리케이션으로 자연스럽게 서비스를 제공하는 기능이다. 자세한 설명은 “JEUS Web Engine 안내서”의 “1.6.10. 로그 설정”을 참조한다.
Common Log Format 지원
Access Log의 포맷을 Common Log Format을 기본으로 지원한다. 하위호환을 위해 JEUS 6의 log format도 지원한다. 자세한 설명은 “JEUS Web Engine 안내서”의 “1.6.10. 로그 설정”을 참조한다.
Virtual Host별 Access Log 설정 추가
Virtual Host 별로 Access Log 설정이 추가되었다. 자세한 설명은 “JEUS Web Engine 안내서”의 “1.6.10. 로그 설정”을 참조한다.
Web Admin enable/disable 기능
Web Admin을 동적으로 enable/disable을 설정하는 기능이 추가되었다. 자세한 설명은 “JEUS Reference Book”의 “4.2.3.12. disable-webadmin”을 참조한다.
웹 엔진 설정 동적 변경 기능
웹 엔진의 설정 중 동적 설정이 반영되는 기능이 추가되었다. 동적 반영이 가능한 설정은 web-engine.xsd 스키마상의 monitoring, threadpool의 min, max, webtob-threadpool의 number, access-log의 enable, format, exclude-ext이다.
Redirect Strategy
javax.servlet.http.HttpServletResponse.sendRedirect(String location) API 사용시에 location을 절대 URL로 변환하는 과정의 정책을 적용할 수 있다. 자세한 설명은 “JEUS Web Engine 안내서”의 “3.3.6. 웹 보안 설정”을 참조한다.
Dynamic Configuration
GMS도입으로 백업서버의 결정을 Static한 설정기반에서 현재 서버의 상황에 맞춰서 결정하는 기능을 추가했다.
NODE 정보를 고려하여 다른 Machine을 일차적 백업으로 결정한다.
JEUS 6에서는 Static한 설정으로만 기동이 가능했다.
Sticky Info Encoding
세션 쿠키에 첨부하던 Sticky정보를 Encoding하여 노출을 막았다.
JEUS 6에서는 Node1_Container1 등의 정보가 노출되었다.
설정 간소화
단순 Cluster 설정만으로 세션 서버가 동작하도록 구성했다.
JEUS 6에서는 한페이지가 넘어가는 설정으로 동작이 되었다. (분산식 세션 서버기준)
Servlet 3.0지원
HttpOnly : 브라우저가 쿠키를 http 요청에만 사용하게끔 있게 하여 Script로 Cookie가 노출되지 않았다.
EJB 3.1 지원
EJB codegen시 Compiler API 지원
EJB 2.x 코드 컴파일 시에는 항상 Java Compiler API를 사용하도록 수정하였다. 이를 이용하면 특정 JDK에 의존하지 않고, 또한 별도의 프로세스를 실행시키지도 않으면서 같은 VM에서 컴파일러를 수행할 수 있어 컴파일 속도가 크게 향상된다. 만약 호환성에 문제가 있을시에 ' -Djeus.ejb.compiler.use-java-compiler-api=false'으로 예전 방식을 사용할 수 있다.
Message Global Ordering 기능 추가
Queue에 produce되는 메시지에 대해서 JMS 1.1 스펙에서 정의하는 것 이상의 강력한 순서 보장 기능을 제공한다.
단일 서버, 혹은 클러스터링 상황에서 메시지가 Queue에 produce된 순서대로 consume되는 것을 보장한다.
Message Group 기능 추가
특정 메시지들을 하나의 그룹으로 명시하면 해당 메시지들은 반드시 서버에 모두 produce된 다음에 하나의 클라이언트로 한 번에 전달되는 것을 보장한다.
개별적으로는 의미가 없고, 모두 모였을 때만 의미를 가지는 메시지들이 있을 때 사용할 수 있다.
Message Sort 기능 지원
Queue 혹은 Durable Subscription에 쌓여있는 메시지를 사용자가 명시한 특정한 키값에 대해서 정렬해주는 기능을 한다.
Message Bridge 기능 지원
전혀 다른 벤더, 다른 버전의 JMS Provider의 Destination간 메시지를 자동으로 전달해 주는 기능을 한다.
Failover/Failback 기능 지원 (Active/Standby 방식의 Failover)
Active 서버의 장애시 Standby 서버가 기동하여 서비스를 대신하고, Active 서버가 복구될 때 다시 Active 서버가 서비스를 이어서 한다.
Clustering 기능
Connection 분산: Connection Factory가 클러스터 내의 서버들을 round-robin으로 선택하여 접속한다.
Message Starvation 해결: 메시지가 없는 서버에서 consume하려고 할 때 내부적으로 서버들간에 메시지를 이동시켜서 클라이언트에게 전달할 수 있도록 한다.
신규 Spec 지원
JAX-WS 2.2 지원
JAXB 2.2 지원
JAX-RS 1.1 지원
Web Services for Java EE 1.3 지원
WS-Addressing, WS-ReliableMessaing, WS-Security, WS-Policy 등 부가적인 WS 확장 Stack 지원
명령어 실행 권한 부여 기능 추가
사용자 별로 콘솔 툴(jeusadmin) 명령어 실행 권한을 부여할 수 있는 기능이 추가되었다. 콘솔 툴에 존재하는 명령어의 이름을 기준으로 권한 설정이 가능하며, 사용자는 권한이 존재하는 명령어만 실행 가능하다. 자세한 설정 방법은 “JEUS Server 안내서”의 “6.6. 데이터소스 관련 설정 동적 변경”을 참고한다.
domain architecture에 적합한 data source 관리 구조로 변경
domain 구조로의 변경, manager / container 통합 등으로 기존의 data source 관리 구조에 변화가 생겼다.
각 MS에서 그것에 등록된 data source를 관리하고 DAS는 MS와 연계하여 domain 범위에서 data source 전체를 관리한다. 자세한 내용은 “JEUS Server 안내서”의 “6.3. 데이터소스 및 Connection Pool 관리”를 참조한다.
JDBC data source 및 connection pool 설정에 대한 동적 변경
JDBC data source 및 connection pool 설정에 대한 동적 변경을 지원한다.
설정 변경시 server 재기동 없이 runtime에 설정 변경 사항이 즉시 반영된다. 이는 jeusadmin과 WebAdmin 모두에서 가능하다. 자세한 내용은 “JEUS Server 안내서”의 “6.6. 데이터소스 관련 설정 동적 변경”, “JEUS Server 안내서”의 “6.7. 클러스터 데이터소스 관련 설정 동적 변경”을 참조한다.
JDBC 4.0 지원
Java SE 6에는 JDBC spec.이 4.0으로 변경되었다.
Java SE 6 환경에서 JEUS를 사용하는 경우 JDBC 4.0 드라이버를 사용할 수 있도록 하고 관련 기능들을 지원한다.
신규 Spec 지원
Java Persistence 2.0 지원 및 EclipseLink 2.3 제공한다. 자세한 내용은 "JEUS JPA 안내서"를 참조한다.
본 절에서는 JEUS의 모듈별 설정의 변경 사항을 정리한다.
http-listener, tcp-listener, ajp13-listener 가 네트워크 레이어의 서버 리스너를 사용하도록 변경
클라이언트로부터의 새로운 연결 및 요청 등을 통합 네트워크 레이어를 사용하도록 변경하였다. 이에 따라 세 개의 리스너들은 별도의 네트워크 관련 설정을 하지 않고, server-listener-ref 설정을 통해서 서버별 네트워크 리스너를 사용하도록 설정한다.
가상 호스트 변경 사항
존재하지 않는 가상 호스트를 타겟으로 디플로이할 경우 실패한다. 기존에는 알아서 기본 가상 호스트를 사용하도록 했지만 이는 매우 모호한 동작이라고 판단하였다. 또한 똑같은 웹 애플리케이션을 여러 개의 가상 호스트에 디플로이 할 수 없다.
jeusadmin의 jspc 명령으로 대체
이미 디플로이된 웹 애플리케이션의 JSP 파일들을 미리 컴파일해두는 기능을 jeusadmin의 jspc 명령으로 대체하였다.
ResourceServlet을 web.xml servlet-mapping으로 매핑 가능하도록 제공
Resource Servlet을 특정 URL로 매핑하여 서비스를 가능하도록 설정한다. 자세한 내용은 “JEUS Web Engine 안내서”의 “3.3.5. 부가 기능 사용을 위한 설정”을 참조한다.
디플로이된 웹 애플리케이션의 정보 강화
디플로이된 웹 애플리케이션의 Servlet, Filter, Listener에 대해서 jeusadmin, 웹 어드민에서 자세하게 정보를 보여줄 수 있도록 지원한다. 자세한 내용은 “JEUS Reference Book”의 “4.2.6.3. application-info”를 참조한다.
AppCompiler에 의해 precompile 된 JSP 클래스들이 디플로이시 중복 copy되는 경우 방지
AppCompiler에서 웹 모듈별로 생기는 .warjspwork 디렉터리 안에 .precompiled_result_file라는 별도의 체크 파일을 만들어서 이 파일과 기존에 서버상에 가지고 있는 _generated_에 있는 체크 파일의 변경 시간을 비교해서 .warjspwork 디렉터리 안의 JSP 결과물들을 복사할지 결정하도록 변경한다. 이를 통해 컴파일 시간이 긴 경우에 시간차이로 인한 중복 copy등의 문제를 해결하였다.
Persistent Deploy를 기본으로 변경
deploy명령을 하면 runtime에 application이 deploy되고, 설정파일에도 deploy정보가 적혀 재부팅시에도 application이 deploy될 수 있도록 한다
공유디스크에 존재하는 애플리케이션을 위한 deploy option 추가
애플리케이션 파일이 공유디스크에 존재하는 경우 불필요한 file 복사를 하지 않도록 deploy시 -shared 옵션을 줄 수 있다.
Auto redeploy 기능 변경
domain 환경에서는 auto deploy를 지원하지 않는다.
jeus-application.xsd 재정의
jeus-application.xsd은 domain.xml과 설정을 공유하지 않으며 jeus-application-dd.xml의 schema로서만 사용된다.
Transaction timeout 이후에 EJB 호출시 transaction propagation에러가 발생하도록 변경
transaction timeout 발생 후 commit이 될 수 있는 문제 수정
transaction timeout 발생 후에 JDBC connection을 계속 사용하거나, EJB transaction propagation이 이루어질 때 commit이 될 수 있는 문제를 수정하였다.
JEUS 7에서 Manager와 Container 개념이 삭제됨에 따라 이를 관리하는 MBean들이 삭제되었으며, 새롭게 도입된 도메인 구조에 맞는 MBean들이 새롭게 추가되었다. 각 MBean들에 대한 자세한 정보는 JEUS API javadoc를 참고한다.
MBean ObjectName 형식이 변경되었다. JEUS 6에서는 ObjectName에는 관리 그룹인 Node를 나타내는 JeusManager 키가 존재하였으나, JEUS 7에서는 JeusManager가 존재하지 않으므로 삭제되었다. 대신 도메인을 나타내는 J2EEDomain 키가 새롭게 추가되었다. ObjectName에 대한 자세한 사항은 “JEUS JMX 안내서”의 “3.4. MBean Object Names”을 참고한다.
JEUS Logger의 default handler를 file handler로 변경
JEUS Logger의 기본 핸들러를 file handler로 변경한다. 설정을 하지 않더라도 모든 log message는 기본 log file에 남는다.
console handler는 설정할 수 없다. console화면에 JEUS log message를 출력하고 싶다면, JEUS를 부팅할 때 -verbose옵션을 주도록 변경되었다.
도메인 구조에서의 보안 정책
도메인에 속한 모든 서버는 DAS가 갖고 있는 설정을 기준으로 보안 설정을 공유한다. 즉, 모든 서버에서 같은 보안 서비스가 실행되며 사용자 계정 정보, 권한 설정 정보를 공유한다.
보안 시스템 설정에 대한 자세한 내용은 “JEUS Security 안내서”의 “제2장 보안 시스템 설정”을 참고한다.
JNDI replication default값 false로 변경
클러스터링 환경에서 바인드를 할 경우 모든 JNDIServer로 해당 객체가 복사되었지만 지금은 복사되지 않는다. -Djeus.jndi.jns.replicatebindings=true로 설정하면 복사가 된다.
<export-cos-naming> element를 삭제
COSNamingService를 사용하려면 부팅시 별도의 설정이 필요했으나 지금은 필요한 시점에 서비스를 자동으로 제공한다.
Connection Pool 모니터링을 위한 jeusadmin 명령 통합
JDBC Connection Pool과 JCA Connection Pool의 제어 및 모니터링 명령을 통합하여 제공한다(jeusadmin과 WebAdmin 모두) 자세한 내용은 “JEUS Server 안내서”의 “6.8. JDBC Connection Pool 모니터링”을 참조한다.
커넥터 리소스 설정을 각 모듈별 설정(jeus-connector-dd.xml)에서 domain.xml로 변경
resource adaptor module을 connector resource로서 등록하여 사용할 수 있다. 자세한 내용은 “JEUS JCA 안내서”의 “제4장 리소스 어댑터”을 참고한다.
Connection Pool 모니터링을 위한 jeusadmin 명령 통합
JDBC Connection Pool과 JCA Connection Pool의 제어 및 모니터링 명령을 jeusadmin과 WebAdmin에서 통합하여 제공한다.