내용 목차
본 장에서는 JEUS 7 Fix#3 릴리즈에서 추가된 새로운 기능과 변경된 기능에 대해 간략히 설명한다.
본 절에서는 JEUS의 신규 추가사항에 대하여 설명한다.
WebSocket Protocol 지원
JEUS 7 Fix#3부터 WebSocket Protocol(JSR356)을 지원한다.
Java EE 7 Servlet 3.1에서 정식 도입이 예상되나 아직 WebSocket Protocol이 정식으로 릴리즈되지 않았다.
Servlet 3.0에서는 지원하지 않아도 무방하나 외부 요구에 대응하기 위하여 WebSocket Protocol을 Beta 서버 형식으로 지원한다.
jeus-web-dd.xml 파일에 deploy할 때 필요한 WebSocket Container 관련 설정을 하고, jeusadmin에서 관련 콘솔 명령어를 지원한다.
WebtoB는 4.1 SP8 Fix#0부터 WebSocket을 지원한다.
WebAdmin의 SSL 사용 기능 추가
SSL_WEBADMIN Listener를 추가하여 WebAdmin을 SSL로 동작하도록 하는 기능이 추가되었다.
본 절에서는 JEUS의 모듈별 변경 사항에 대하여 설명한다.
JASPER를 사용하는 경우 OOM이 발생하지 않도록 수정
JSP를 컴파일하는 경우 JASPER 컴파일러가 내부에서 가지고 있는 pageNodes 정보가 계속 증가하여 OOM 발생 가능성이 있었으나, JEUS에서 pageNodes를 null 로 수정하여 OOM 발생 가능성을 방지하도록 변경되었다.
본 절에서는 JEUS의 모듈별 버그 수정 사항대하여 설명한다.
request.getRequestURL를 호출하는 경우 포트가 생략되지 않는 문제 수정
HTTP, HTTPS 요청이 각각의 기본 포트(예: 80, 443)를 사용하는 경우 request.getRequestURL() 함수에서 포트 번호를 제외하고 URL 정보만을 회신하도록 수정되었다.
WJPv2를 사용하는 경우 무한 루프에 빠지는 문제 수정
WJPv2는 "request + body, body, ... "와 같이 여러 개의 메시지로 나뉘어서 전송되는 데, 각 메시지별로 남는 데이터 관리의 문제로 무한루프에 빠지면서 CPU 점유율이 상승하던 문제가 수정되었다.
access logging할 때 HttpSession 객체를 사용하는 경우 ClassNotFoundExcetion 발생 문제 수정
access log에서 HttpSession을 사용(%u 또는 %s 옵션 사용)하면서 HttpSession에 User Class가 포함된 경우 ClassNotFoundExcetion으로 Session Deserialize Error가 발생할 수 있는 문제가 수정되었다.
Session Access할 때 ClassLoader에서 WEB-INF 하위 Class를 찾지 못하는 문제 수정
Session Access 수행 과정에서 ClassLoader에서 WEB-INF 하위 Class를 찾지 못해 User Class를 deserialize하지 못하는 문제를 수정하였다.
URL Pattern Blocking 기능을 사용할 때 대소문자를 구별하지 않도록 수정
URL Pattern을 판단할 때 대소문자를 구별하지 않도록 수정하였다.
(예 : '%5c'와 '%5C'를 같은 값으로 판단)
jeus.servlet.servlets.JspServlet을 등록할 때 init-param이 적용되지 않는 문제
web.xml에 JspServlet을 등록할 때 설정하는 init-param이 적용되지 않던 문제가 수정되었다.
web.xml에 2개 이상의 JspServlet을 등록할 때 deploy 단계에서 StartingException이 발생하도록 수정되었다.
webtob-connector의 connection 동적 설정 변경이 정상적으로 되지 않던 문제 수정
webadmin 및 console 명령어로 webtob-connector의 connection 설정을 동적으로 변경할 경우 설정한 값과는 다르게 늘거나 줄던 문제가 수정되었다.
EJB ClassLoader Leak 문제 수정
EJB를 공유할 수 있도록 ClassLoader를 Static Map에 저장하는데, EJB가 undeploy되어도 ClassLoader를 제거하지 않아 Leak이 발생할 수 있는 문제를 수정하였다.
jeus-ejb-dd에 설정된 disconnect-timeout 설정이 반영되지 않는 문제 수정
EJB 3.1 이후 부터 disconnect-timeout은 deprecated되고, @StatefulTimeout이나 ejb-jar.xml의 stateful-timout 설정을 사용하게 되었다.
해당 설정은 하위 버전 호환을 위해 여전히 지원하고 있으나, 현재 해당 설정값을 가져오려고 하지만 그 값을 가져오려는 BeanInfo에는 disconnect-timeout 값이 나중에 설정되기 때문에 항상 diconnect-timeout 값이 항상 null이 되어 jeus-ejb-dd에 설정된 disconnect-timeout 값을 사용할 수 없던 문제를 수정하였다.
@StatefulTimeout이 적용되지 않는 오류 수정
Stateful Timeout에 @StatefulTimeout 값이 적용되지 않던 문제가 수정되었다.
Subject Delegation 기능을 사용한 MBeanServerConnection에서 OOM 발생 문제 수정
서버를 재시작하지 않고 장시간 사용할 경우 Subject Delegation 기능을 사용한 MBeanServerConnection에서 Cache Entry 정리 문제로 Cache가 계속 증가하여 OOM이 발생할 수 있는 문제를 수정하였다.
DAS에서 전송받은 domain.xml의 vhost 정보가 반영되지 않는 문제 수정
DAS와 MS가 다른 장비에 있고 MS에 domain.xml에 없는 경우 MS를 부팅할 때 DAS로부터 받아온 domain.xml에 설정된 vhost 정보를 MS를 기동할 때 반영되지 않는 문제가 해결되었다.
auto-lock을 사용할 때 설정 작업 중 schema invalid 오류 발생 문제 수정
Lifecycle Invocation을 추가할 때 LifecycleInvocationType이 생성되어야 InvocationType을 생성할 수 있기 때문에 중간에 invalid xml 상태가 되는데, auto-lock을 사용할 경우 invalid 상태에서 벗어날 수 없는 문제가 발생한다.
WebAdmin의 className을 설정할 때 1개의 InvocationType을 같이 설정하도록 수정하여 문제를 해결하였다.
Session Manager의 shared-mode=true인 경우 Dump Backup을 실패하는 문제 수정
Session Manager가 다른 서버의 Session Manager를 찾는 중 다른 서버의 Session Manager에서 자기 자신의 Session Manager Name을 찾을 경우 다른 서버가 alive하지 않다고 판단하여 Dump Backup을 수행하지 않던 문제를 수정하였다.
Session Manager가 Shared Mode인 경우 Manager의 이름이 서버 이름과 동일하게 1개만 생성되기 때문에 GMS Alive Check에서 이미 동작이 확인되어 별도의 Alive Check가 불필요하다. 따라서 확인 과정을 제거해서 문제가 발생하지 않도록 수정되었다.
Reliable Multicast를 사용할 때 CPU를 과도하게 사용하는 문제 수정
MS가 independent 모드로 기동이 되고, DAS를 기동 후 종료한 경우 sender thread의 timeout 설정이 잘못되어 CPU 점유율이 높아지는 현상이 수정되었다.
MS를 정상 종료하였으나 지속적으로 reconnect하는 문제 수정
MS가 기동될 때 다른 MS로 클러스터링 정보를 보내게 되는데 다른 MS로 정보를 보내지 못하면 reconnect를 시도하게 된다.
이 과정에서 MS가 종료되면 재시도를 중단해야 하는데 계속 반복하는 문제가 수정되었다.