JEUS 9
본 장에서는 JEUS 9 릴리스에서 추가된 새로운 기능에 대해 간략히 설명한다.
1. 신규 기능
JEUS 9에서는 Jakarta EE 9의 주요 기능을 완벽히 지원하여 개발 생산성을 크게 향상시켰다. 또한 Jakarta EE 9에서 향상된 여러 기술을 사용하여 보다 안정적인 환경을 제공한다.
1.1. Server
-
app deploy 실패 시 서버를 종료하는 옵션 추가
-
jeus.server.boot.all-apps-running 프로퍼티를 true로 설정한다.
-
-
JNDI Port를 다른 Listener로 지정할 수 있도록 옵션 추가
-
jeus.jndi.port 옵션을 추가하여 별도의 Listener port에 JNDI port를 가질 수 있도록 한다.
-
1.2. Servlet
-
압축 기능 추가
-
content-length 기반의 response일 경우 압축 여부를 결정하는 min size 옵션 추가한다.
-
-
ACCESS-LOG 내 압축률에 관한 %z 옵션 추가
-
http 압축 기능 사용 시 압축률을 표시할 수 있도록 옵션을 추가하였으며 압축률을 'default’로 표시한다.
-
-
partitioned cookie 지원
-
Partitioned Cookie 지원을 위해 cookie가 secure일 때 partitioned을 추가하는 옵션을 제공한다.
-
jeus.servlet.response.cookie.partitioned 프로퍼티를 true로 설정한다.
-
-
-
요청마다 ThreadLocal 지울 수 있는 기능 추가
-
Open Source를 사용하거나 ThreadLocal에 데이터를 저장하여 사용하는 경우 기존 데이터가 남아 문제가 발생할 수 있어 요청마다 ThreadLocal을 지울 수 있는 기능을 제공한다.
-
clear-thread-local command를 추가하여 on, off 설정이 가능하다. (기본값: false)
-
-
-
내장 WebtoB에서 local-shutdown 호출 시 워커 스레드를 기다리지 않도록 하는 옵션 제공
-
내장 WebtoB와 연동된 MS에서 'local-shutdown' 시 -g 및 -to 옵션을 사용하면 지연 없이 종료될 수 있는 옵션을 제공한다.
-
jeus.servlet.engine.waitForWorkerDestroy 프로퍼티를 false로 설정한다.
-
-
-
Service Timeout 로그 추가
-
service timeout 발생 여부를 확인할 수 있는 로그를 추가한다.
-
-
jeus-web-dd.xml과 web.xml을 외부에서 가져올 수 있도록 기능 추가
-
deploy command에 -jwdp와 -wp 옵션을 추가하여 외부에서 jeus-web-dd.xml과 web.xml을 가져올 수 있도록 기능을 제공한다.
-
-
Request-uri에 user info가 포함되어 있어도 에러를 발생시키지 않도록 기능 추가
-
jeus.servlet.ignoreUserInfoInRequestURI 옵션을 제공한다.
-
-
JDK compiler 실패 이유를 JEUS 로그에 출력되도록 수정
-
JDK에서 제공하는 로그를 JEUS 로그에 출력하여 JEUS가 인식하지 못하는 JDK compiler 실패 관련 로그를 출력하도록 기능을 제공한다.
-
-
hot swap 실패 시 auto-reload 수행하지 않는 옵션 추가
-
jeus.servlet.loader.ignoreAutoReloadAfterHotSwapFailed, jeus.server.useHotSwapAgent 옵션을 제공한다.
-
1.3. EJB
-
EJB2.x에서 java global naming 지원
-
기존 EJB3.x에서만 지원하던 java:global 방식의 JNDI lookup을 EJB2.x에서도 지원되도록 수정하였다.
-
1.4. Session Server
-
JEUS 자체 중앙식 세션 서버 방식도 지원하도록 기능 추가
-
JEUS 세션 매니저 사용 시 분산식 또는 중앙식 세션 서버 방식을 선택하여 사용할 수 있도록 중앙식 세션 서버 방식이 추가되었다.
-
jeusadmin 콘솔 툴로 아래와 같이 설정을 추가한다.
중앙식 세션 서버 방식 적용할 대상 스코프 추가add-sessionstorage-scope [SCOPE_NAME] -target [TARGET_SESSION_STORAGE] -sessionType CENTRAL -clusters [CLUSTER_NAME]
중앙식 세션 서버 환경에서 사용할 prmiary, backup 서버 설정set-jeus-central-session-server -primary [PRIMARY_SERVER] -secondary [BACKUP_SERVER]
-
-
Session Storage 기본 옵션 추가
-
재기동 상황에서 세션 유실을 방지하기 위해 아래 두 옵션이 기본으로 추가되었다.
-
backup-queue-size=0
-
backup-flowcontrol-enabled = false
-
-
-
세션 요청 처리를 위한 별도의 스레드 풀 제공
-
부하 상황에서 모든 스레드가 요청을 보내기만 할 경우 지연이 발생할 수 있으므로 요청 처리를 위한 별도의 스레드 풀을 제공한다.
-
2. 변경 기능
2.1. Server
-
서버 기동 시 JNS Port bind 순서를 서버 기동 이후로 변경
-
EJB 클라이언트 사용 시 서버의 EJB가 deploy 되기 전 열리는 base port에 EJB를 호출하여 특정 로그가 다수 출력된다. 이에 따라 JNS Port bind를 서버 기동이 완료된 시점으로 변경하였다.
-
2.2. Servlet
-
WJP,HTTP 파싱 시 OOM이 발생될 수 있는 취약점 방어 로직 옵션명 변경
-
jeus.servlet.http.maxTotalHeaderSize 옵션으로 통일한다.
-
-
ACCESS-LOG 스키마 변경
-
스키마상으로 System-Log와 동일 그룹으로 묶여 잘못된 태그가 제공된 이유로 스키마에서 <formatter-pattern>, <level>, <filter-class> 태그를 삭제하였다.
-
-
JspReload 시 서비스 지연되는 문제가 있어 hashtable 우회하여 lock으로 인한 지연 현상 완화
-
Jsp include를 사용한 Jsp reload 시 지연할 수 있는 현상을 수정하였다.
-
-
JspWrapperCount 체크해서 일정 개수만큼 유지하는 기능 삭제
-
jeus.servlet.loader.jspcount 옵션을 삭제하였다.
-
-
Max Instance Pool Size 스키마 삭제
-
해당 옵션은 STM(software transactional memory)을 사용하는 경우 servlet instance 개수를 설정하는 옵션이다. 스펙에서 STM이 제외되어 관련 스키마를 삭제하였다.
-