본 장에서는 JEUS 21 릴리즈에서 추가된 새로운 기능에 대해 간략히 설명한다.
JEUS 21에서는 Jakarta EE 8의 주요 기능을 완벽히 지원함으로써, 개발 생산성을 획기적으로 향상 시켰다. 또한 Jakarta EE 8에서 향상된 여러 기술을 사용하여 보다 안정적인 환경을 제공한다.
기존 WebAdmin을 SuperFrame Master로 통합
Master에서 JEUS21(Managed Server)를 제어 및 설정
새로운 UI 적용
세션 스토리지로 Redis, Hazelcast 사용 기능 추가
기본 제공 세션 스토리지가 아닌 Redis 및 Hazelcast를 사용할 수 있는 기능 제공한다.
Sticky encoding의 encoding rule 기능 개선
session의 encoding-rule을 padding이 출력되지 않도록 value값 BASE64_WITHOUT_PADDING과 RAW를 추가하게 되었다.
Session Server의 backup table을 jeusadmin tool을 이용해서도 볼 수 있는 기능 추가
server의 로그에서 뿐 아니라 jeusadmin을 통해서 session server의 backup table을 조회할 수 있다.
list-session command의 기능 추가
timeout이 지난 session을 -inactive 옵션으로 조회할 수 있다.
특정 session만을 session id로 -i 옵션을 통해 검색하여 조회할 수 있다.
Session Cluster설정을 Session Storage 설정으로 확장
session을 관리하는 session manager와 실제 session을 보관하는 session storage를 분리하게 되었다.
session storage로 JEUS, REDIS, RUNTIME과 같은 Provider를 설정하여 사용할 수 있다.
session storage 설정을 위한 jeusadmin command를 제공 한다.
Application 과 Cluster에 session scope를 추가/제거 할 수 있는 기능 추가
기존에는 session-cluster 하위에 specific session scope를 만들고 application의 jeus-web-dd.xml에 scope를 설정 하지만 JUES21에서는 scope에 Application과 Cluster를 직접 설정할 수 있다.
분산식 환경에서 full-search 옵션 기능 추가
session을 전체 서버에서 찾는 기능의 사용 여부를 판단하는 옵션이 필요하여 0과 음수는 사용하지 않는다는 의미로 사용되고 0보다 큰 수는 실제 timeout값으로 사용한다.
OSGI Framework 동작 기능 추가
JEUS 상에서 설정을 통해 OSGI Framework 인스턴스를 생성하고 초기화할 수 있는 설정을 제공한다.
connection validation시 별도의 스레드를 생성하여 check-query를 수행하고 스레드에 timeout을 주도록 기능 추가
데이터소스의 connection pool 설정에서 "Connection Validation" 하위의 "Check Query Class"를 "jeus.jdbc.connectionpool.TimeLimitedConnectionChecker"로 설정하여 스레드에 timeout을 주도록 추가하였다.
데이터소스 계정 관리 기능 확장
계정 관리 기능을 유연성있게 확장하기 위해 JEUS JDBC 엔진과 DB 접속 계정 정보를 관리하는 시스템 사이에 적절한 인터페이스, API를 추가하였다.
클래스 | 설명 |
---|---|
jeus.jdbc.helper.DataSourceAccountProvider | 내부적으로 DB에 접속하기 위한 "User"와 "Password"를 얻어올 수 있는 API를 정의하고 있다. |
jeus.jdbc.helper.DefaultDataSourceAccountProvider | 위의 인터페이스에 대해 JEUS에서 기본적으로 제공하는 구현체이다. |
jeus.jdbc.datasource.DataSourceAccountProviderException | 위의 인터페이스 구현체가 DB에 대한 "User"와 "Password" 값을 평문으로 얻는데 실패했을 경우 JEUS JDBC 엔진에게 던지는 에러를 정의한다. |
데이터소스 connection pool 초기화 중 JDBC connection 생성 단계에서 에러가 발생해도 connection pool 초기화 작업을 완료하는 옵션 기능 제공
connection pool 초기화 중 에러 발생해도 connection pool 초기화 작업 완료할 수 있도록 하는 jeus.jdbc.connection-pool.keep-initialization-on-connection-error 옵션을 제공한다.
서버 기동 시 JDBC connection pool 초기화를 수행하는 옵션 기능을 추가
서버 기동 시 connection pool 초기화를 할 수 있도록 하는 jeus.jdbc.connection-pool.initialization-on-boot 옵션을 제공한다.
jeusadmin에서 add-data-source command 옵션으로 algorithm을 추가
add-data-source 명령어에 algorithm을 추가하였다.
JEUS Store Postgre EnterpriseDB 추가 지원
JEUS Store 설정 시 EnterpriseDB를 추가 지원하도록 한다.
Quota를 정의해 Destination별로 설정 기능 추가
해당 기능이 추가됨에 따라 add-jms-quota, modify-jms-quota, remove-jms-quota, list-jms-quotas 명령이 추가되었다.
Quota를 정의하여 Destination별로 설정할 수 있도록 기능이 추가되었다. 단, Cluster 환경의 destination은 Quota 설정이 불가하다.
jeusadmin [JMS] 항목 명령어 추가
Connection factory, Quota, Destination 등 jms 리소스 설정 항목 추가/조회/수정/제거 명령이 추가되었다.
JMS Clustering 구조 확장
기존 DurableSubscription에 한정하여 클러스터링이 동작하던 구조에서 Shared / Durable / SharedDurable subscription을 추가적으로 클러스터링 동작이 되도록 지원한다.
Topic message multicast 기능 추가
Topic message를 UDP multicast를 이용하여 publish하는 기능을 지원한다.
log 파일에 posix permission, chown 설정 시 Domain 일괄적용 기능 추가
Domain 내 모든 log 파일에 posix permission, chown을 적용하는 기능이 추가되었다. 기존 Logger의 file-handler와 함께 설정할 경우 file-handler 설정이 우선된다.
NIO Selector sharing 기능 추가
NIO Selector를 전체가 공유하는 방식과 Base Listener를 제외한 나머지가 공유하는 방식을 제공하는 기능이 추가되었다.
타 서버와 통신하는 방식 transport 설정 추가
도메인 설정 변경 시 transport 설정으로 DUMMY, HYBRID, MESH, TREE를 선택하는 방식이 추가되었다. 단, 쿠버네티스 환경에서는 TREE를 고정으로 사용하도록 한다.
Virtual Multicast가 Master Server의 주소만 특정된 상태에서도 동작하도록 기능 추가
최소한 Master Server의 listen-address만 기술해 놓으면 Virtual Multicast가 가능하도록 기능이 추가 되었다.
SCF의 Callback을 호출받고 싶은 Executor를 Listener에 지정할 수 있는 기능 추가
이벤트에 대한 Callback은 Thread pool에 맡겨 수행하게 된다. 여러 이벤트가 동시에 발생할 경우 호출 순서 예측이 불가능하여 Callback을 호출받을 Executor를 지정할 수 있도록 기능이 추가 되었다.
Lifecycle Invocation 설정 command 기능 추가
Lifecycle Invocation 설정 시 webadmin을 통해서만 설정 가능했던 부분을 고려하여 jeusadmin command로도 설정 가능하도록 기능이 추가되었다.
Servlet 4.0 스펙 지원
Servlet 4.0 스펙의 기능을 지원한다.
Websocket client 지원 기능 추가
client authentication 기능을 제공한다.
JEUS valve 기능 추가
tomcat valve 기능으로 서버와 가상호스트 단위로 filter를 적용하는 기능을 제공한다.
URL rewrite 기능 옵션을 제공한다.
jeus.servlet.valve.rewrite.RewriteValve
모든 http 응답을 chunked로 나가게 하는 옵션 추가
weblogic 윈백 및 JEUS 7 fix 3 이하 버전에서 업그레이드 하는 경우를 고려한 옵션을 제공한다.
jeus.servlet.response.forceChunkedResponse 프로퍼티를 true로 설정한다.
jeusadmin AccessLog 명령어에 permission 옵션 추가
jeusadmin access-log 하위의 file-handler에서 log 파일의 접근 권한을 설정할 수 있는 permission 옵션을 추가한다.
WJP websocket 지원
이전 버전(JEUS 8 Fix#1)까지 reverse proxy를 통한 연결 방식에서 WebtoB - JEUS 간 reverse connection을 통한 websocket 통신을 지원한다.
http method 제한 옵션 추가
http method를 서버 단위에서 제한할 수 있도록 옵션을 추가한다.
Valve Class name | key | value |
---|---|---|
jeus.servlet.valve.MethodConstraintValve | deny or allow | GET, POST 등 |
Set-cookie 헤더에 SameSite 속성 추가
Set-cookie 헤더에 SameSite 속성을 추가한다.
JSP Compiler에 Eclipse Compiler 추가
JSP Compiler에 동시성 버그가 없는 Eclipse Compiler를 추가한다.
user agent에 따라 Cookie의 SamsSite 속성을 삭제할 수 있는 필터 추가
특정 user agent에서 Cookie의 SameSite 속성을 삭제할 수 있는 필터를 추가한다.
본 절에서는 JEUS의 모듈별 설정의 변경 사항을 정리한다.
Application-info 명령어를 통해 애플리케이션 세부 설정 조회 기능 추가
application-info -id <APPLICATION_ID> -detail 형태로 입력 시 애플리케이션 속성 정보가 빠짐없이 출력되도록 변경한다.
EJB 배포 시 변경사항이 없는 app일 경우 fast-deploy를 항상 사용하도록 변경
Deploy-0232 메시지 출력 시 INFO 메시지에는 Stack Trace를 출력하지 않도록 변경
IIOP 통신 상에서도 WorkArea 기능 사용할 수 있도록 확장
IIOP 통신 상에서도 WorkArea 부가기능 사용할 수 있도록 기능을 제공한다.
Scheduler Service를 사용하지 않으면 boot time에 로드하지 않도록 변경
<scheduler> <enable> 옵션이 false일 때 Scheduler Service를 boot time에 로드하지 않도록 변경하였다.
DataSource 설정 시 export-name으로 alias를 줄 수 있도록 기능 개선
datasource-id 당 복수개의 export-name을 설정할 수 있도록 기능을 개선한다.
도메인 설정 변경 시 Use Virtual Multicast 기능 제거
타 서버와 통신하는 방식 transport 설정 기능이 추가되면서 Use Virtual Multicast 기능은 제거되었다.
SCF 초기화시에 자동 생성되는 Join 이벤트의 범위를 subGroup까지 확장
SCF 초기화시에 Leader 선정된 후 자기 자신에 대한 Join 이벤트를 생성하여 Callback들을 호출해 준다. 이때, Default Group에 대한 호출뿐 아니라 subGroup까지 확장하도록 변경되었다.
role-user mapping command를 role-principal mapping command로 변경
(un)assign-role-to-user의 command는 (un)assign-role-to-principal로 변경되었다.
Managed Server의 masterurl 이 localhost인 경우 Master Server에 연결가능한 address를 탐색하도록 변경
Managed Server 기동 시 masterurl이 localhost일 경우 local network 주소 중 서버에 연결 가능한 주소로 연결되도록 변경되었다.
base64로 Encoding한 암호문에서 Padding 문자를 제거해도 Decoding되도록 변경
role과 resource에 대해 할당된 Permission과 할당되지 않은 Permission으로 나누어 관리하도록 변경
show-policy의 명령어로 할당된 Permission과 할당되지 않은 Permission으로 나누어 관리하도록 변경 되었다.
role과 resource에 대한 (un)assign command 동작을 수정
role과 resource에 대한 유효성 검사를 하고, command의 이름을 수정하여 의미를 확실하게 한다.
rolePermissionType에서 Principal의 최솟값을 1에서 0으로 변경
unchecked와 excluded type인 role에 대해 principal을 지정할 필요가 없다.
MS가 정상 기동된 상태에서 비정상 종료 직후 STANDBY로 재기동 되었을 때 서버 상태 반영되도록 변경
서버가 SCF Join 될 때 서버 시작 시간이 기존 서버의 시작 시간과 다른 경우 서버 상태를 UNKNOWN으로 변경한 뒤 서버의 상태를 가져오도록 변경되었다.
JEUS 메시지 내 domain.xml 문구 변경
domain.xml이 포함된 메시지는 domain 또는 JEUS Domain Configuration으로 변경되었다.
stop-server command에서 -f 및 -to 옵션 변경
-to 옵션 사용 시 1 이상의 숫자만 입력할 수 있도록 수정하였다.
-f, --force 옵션 사용 시 서버 자원 정리 과정을 거치지 않고 강제 종료되도록 수정하였다.
명칭 변경
변경사항
기존 | 변경 | |
---|---|---|
명칭 | Domain Admin Server / DAS | Master Server / MASTER |
옵션 | dasurl, daspath, das, excludeDas / exdas, exclusive-das /ed, das-name / das-base-port / das-base-address | masterurl, masterpath, mastername, excludeMaster / exmaster, exclusive-master / em, master-name / master-baseport / master-base-address |
서버 프로퍼티 | jeus.domainadminserver. deploy.socket jeus.domainadminserver.webadmin.background.deploy jeus.domainadminserver.webadmin.contextpath | jeus.masterserver.deploy.socket jeus.masterserver.webadmin.background.deploy jeus.masterserver.webadmin.contextpath |
Fake Webadmin 제거
webadmin이 deploy 되기 전 사용하였던 fake webadmin을 제거하고 WaitingPage를 제공하도록 변경하였다.
session 설정 우선순위를 변경
session 설정 우선순위를 webcommon.xml → domain.xml → jeus-web-dd.xml → web.xml 순으로 변경하였다.
무의미한 thread id 출력 삭제
사용자에게 보여지는 페이지에 thread id가 노출되지 않도록 삭제하였다.