제2장 JEUS 21 Fix#1

본 장에서는 JEUS 21 Fix#1 릴리즈에서 추가된 새로운 기능에 대해 간략히 설명한다.

2.1. 신규기능

2.1.1. SuperFrame Manager

  • WebtoB Connector 추가 시 Use NIO 설정을 할 수 있도록 추가

    • wjp 관련 설정들이 변경 되면서 Use NIO 옵션을 설정 할 수 있도록 추가하였다.

  • cluster 설정에서도 virtual host 설정할 수 있도록 추가

  • 로그인 시 사용하는 계정에 대해 5회 이상 실패 시, 30초간 로그인을 제한하는 기능이 추가

2.1.2. Server

  • 서버 로그 홈 경로를 지정할 수 있도록 옵션 추가

    • jeus.log.home 프로퍼티로 서버 로그 홈 경로를 지정할 수 있도록 옵션을 추가하였다.

  • jeusadmin [Configuration Editing] 기능 추가

    • SFM에서 Lock & Edit 기능을 대응하여 jeusadmin [Configuration Editing] 기능을 추가하였다.

2.1.3. Servlet

  • wjp 파싱 시, OOM 발생될 수 있는 취약점 방어 로직 옵션 추가

    • webtob를 통해 악의적인 공격에 대해 JEUS 내부적으로 방어 로직 옵션이 추가되었다.

    • jeus.servlet.io.util.defaultMaxHTTPHeaderSizeInWJP 프로퍼티를 설정하며, 미 적용 시 기본값 32k가 적용이 된다. 해당 값 보다 큰 headerSize가 요청될 경우 400 response로 처리되도록 하였다.

2.1.4. JNDI

  • XA Transaction 환경에서 하나의 Transaction의 시작과 종료 사이에 존재하는 EJB 호출은 모두 동일한 서버를 타겟팅할 수 있도록 옵션을 추가

    • XA Transaction 환경에서 클러스터링된 EJB 호출시, 하나의 Transaction의 시작과 종료 사이에 존재하는 EJB 호출은 모두 동일한 서버를 타겟팅 할 수 있는 기능을 추가하였다.

    • jeus.jndi.clusterlink.selection-policy=xid-hashing 프로퍼티를 설정한다.

2.1.5. HostManager

  • 암호화된 서버 기동 기능 추가

    • hostmanager.yml 내 additionalArgs 환경 변수를 이용하여 암호화된 서버 기동 가능하도록 기능을 추가하였다.

  • start-server 명령 기능 추가

    • hostmanager를 통해 jeusadmin start-server command로 서버 기동 가능하도록 기능을 추가하였다.

2.1.6. EJB

  • IIOP 통신에서 클라이언트의 ORB port를 지정하는 옵션 추가

    • IIOP 통신에서 클라이언트의 ORB port를 지정하는 옵션을 추가하였다.

    • jeus.corba.clientORBPort(단위 int, default 0, default인 경우 랜덤 포트 적용) 프로퍼티를 설정한다.

  • IIOP 통신중 FVD가 필요한 상황에도 meta operation을 skip 할 수 있는 옵션 추가

    • IIOP 통신중 FVD가 필요한 상황에도 meta operation을 skip 할 수 있는 옵션을 추가하였다.

    • jeus.corba.useMetaOperation 프로퍼티를 설정한다.

  • lookup을 요청시 NameNotFoundException이 발생할 경우, 옵션으로 명시된 다른 서버로 다시 요청을 보내는 lookup redirection 기능을 추가

    • lookup을 요청시 NameNotFoundException이 발생할 경우, 옵션으로 명시된 다른 서버로 다시 요청을 보내는 lookup redirection 기능을 추가하였다.

    • 요청을 보내는 서버의 시스템 프로퍼티 jeus.jndi.redirectLookup=[서버 주소 or jeus://클러스터이름 or 서버주소,서버주소](String)를 설정한다.

2.2. 변경기능

2.2.1. SuperFrame Manager

  • thread pool 관련 부분 변경

    • Web Engine → Basic 에 thread pool 설정이 삭제되었으며 각 Listener, Connector에서 설정할 수 있도록 변경하였다.

  • 서버명 정책을 다음과 같이 변경

    • 1~128자의 영문 대/소문자, 특수문자 3종류 (- _ .) 만 허용되도록 변경하였다.

    • 특수문자 " - " 로 시작하는 id 명은 추가할 수 없도록 변경하였다.

2.2.2. Session Server

  • list-session command 의 -inactivate 옵션 기능을 삭제

    • session timeout 되는 순간 local 에 저장된 session을 바로 지우도록 수정되어 inactive 옵션이 불필요하므로 삭제하였다.

2.2.3. SCF

  • [SCF-0401] 로그 레벨을 변경

    • [SCF-0401] 로그 레벨을 INFO [2]에서 FINE [4]로 변경하였다.

2.2.4. Security

  • custom password validator command 에서 class 옵션이 없으면 command가 적용되지 않으므로 해당 옵션을 선택 옵션에서 필수 옵션으로 변경

2.2.5. Servlet

  • SingleThreadModel 제거하여 일반 서블릿과 동일하게 여러 스레드에서 처리할 수 있도록 변경

  • JEUS에서도 옳지 않은 가상 호스트에 요청이 오면 403 응답하도록 하는 옵션을 추가

    • 옵션 설정시 JEUS에서도 옳지 않은 가상 호스트에 요청이 오면 webtob와 동일하게 403 응답이 오도록 하였다.

    • jeus.servlet.common.forbidNotMatchedVirtualHost 프로퍼티를 설정한다.

  • wjp 관련 설정을 다음과 같이 변경

    • wjp는 <use-nio>true, false 값으로 요청을 blocking 또는 non-blocking으로 처리할 것인지 정할 수 있다.

    • 기본 값은 true인데, true일 경우 connection과 thread pool 사이에 아무런 관계가 없어짐으로 <connection-count>와 thread 의 <min> <max> 값이 달라도 된다.

    • NonBlocking은 context 레벨의 스레드 풀과 virtualhost 레벨의 스레드풀을 사용할 수 있다. (http, ajp, tcp 처럼)

    • blocking은 이전 webtob처럼 스레드풀의 min, max와 connection-count 수가 같아야 한다. context 레벨의 스레드 풀과 virtualhost 레벨의 스레드풀을 사용할 수 없다.

    • domain socket은 blocking만 사용할 수 있고, network는 둘 다 사용할 수 있다.

  • listener별로 thread pool을 관리하도록 변경

2.2.6. WebService

  • jdk11 환경에서 application 배포를 위해 jakarta.jws-api.jar 를 lib/system에 포함되어 배포되도록 변경

2.3. 버그수정

2.3.1. SuperFrame Manager

  • webtob connector Hostname으로 설정시 에러 발생하는 버그를 수정

    • webtob connector 설정시 ip가 아닌 hostname으로 설정하면 에러가 발생하는 버그를 수정하였다.

2.3.2. Session Server

  • session.isNew() 다수 호출 시 이상 현상을 수정

    • isNew() 두번째 호출 시 true가 발생하는 버그를 수정하였다.

2.3.3. Deployment

  • 애플리케이션 배포 시 스레드 로컬로 인해 클래스 로더 누수가 발생할 수 있는 문제를 수정

    • 오픈 소스 라이브러리를 사용하거나, 사용자 코드를 실행해야 하는 경우 스레드 로컬에 저장되어 있는 값으로 인하여 OOM이 발생할 수 있는 문제를 수정하였다.

2.3.4. JDBC

  • JDBC 데이터소스 설정에 Property로 User, Password를 올바르게 주었더라도 데이터소스 test 또는 실제 DB connection을 얻고자 할 때 적용이 안되는 버그를 수정

    • JDBC 데이터소스 설정에 Property key 값을 대소문자 정확하게 "User", "Password"로 주지 않으면 안되는 버그를 수정하였다.

    • JDBC 데이터소스 설정에 Property로 준 User, Password 값이 DB getConnection에 적용되지 않는 버그를 수정하였다.

2.3.5. JMS

  • cluster 환경에서 Durable Subscription 사용시 Connection Close가 동작하지 않는 버그를 수정

    • cluster환경에서 Message Receive할 경우 Durable Subscription 사용시 Connection Close가 정상적으로 이루어지도록 수정하였다.

  • cluster 환경에서 Durable Subscription 사용시 Delivered Message 수가 실제 수보다 더 많이 표기되는 버그를 수정

    • cluster환경에서 Durable Subscription 사용시 Delivered Message 수가 상이하게 표기되는 버그를 수정하였다.

  • cluster 환경에서 Destination의 Remaining Message 증가/감소가 두 번씩 수행되는 버그를 수정

    • cluster환경에서 Destination의 Remaining Message 증가/감소가 한 번씩 수행되도록 버그를 수정하였다.

2.3.6. Tool

  • show-webtob-connector 가 nonBlocking일 때 정상동작 하지 않는 버그를 수정

2.3.7. SCF

  • 기동 시 SCF를 맺는 과정에서 hang이 걸리는 버그를 수정

    • SCF를 맺는 과정에서 설정된 timeout 만큼만 기다리고 결과를 로그를 남기도록 수정하였다.

2.3.8. Security

  • 패스워드 암호문으로 서버 기동 및 jeusadmin 로그인 가능한 버그 수정

    • 암호화된 패스워드 문구로 Master, Managed Server 기동 및 jeusadmin 로그인이 가능했던 버그를 수정하였다.

  • 하위 버전으로 jndi lookup 불가한 버그 수정

    • JEUS21 하위 버전으로 jndi lookup 요청 시 OP_LOGIN 로그가 출력되며 lookup에 실패하는 버그를 수정하였다.

  • modify-role, modify-resource command 버그 수정

    • modify-role, modify-resource command로 role, resource 수정 시 jeus.security.base.SecurityException 발생하며 수정 실패하는 버그를 수정하였다.

2.3.9. Server

  • local-shutdown 명령으로 서버 종료 후, 서버 기동되지 않는 버그 수정

    • local-shutdown 명령으로 서버 종료 후, 해당 서버 재기동되지 않는 버그를 수정하였다.

  • OSGI-framework를 추가 및 수정 시 존재하지 않는 서버도 입력되는 버그 수정

    • add-osgi-framework, modify-osgi-framework 명령으로 존재하지 않는 서버 목록도 추가되는 버그를 수정하였다.

  • OSGI-framework 설정 시 대상 서버로 지정하지 않은 서버가 기동되지 않는 버그 수정

    • 대상서버로 설정되어 있지 않은 경우도 고려하여 수정하였다.

2.3.10. Servlet

  • 서버 종료시 graceful옵션을 사용할 경우 서버가 종료되지 않는 버그 수정

    • 서버 종료시 graceful옵션을 사용할 경우 서버가 종료되지 않는 버그를 수정하였다.

  • webtob 연동하고 graceful옵션으로 종료시 대기 후 종료되는 버그 수정

    • webtob 연동하고 stop-server SERVERNAME -g 명령어로 종료시 요청 처리 후에도 대기 후 종료되는 버그를 수정하였다.

  • selector스레드에서 문제가 발생했을 경우 정상적으로 에러 메시지 보내도록 수정

    • selector스레드에서 문제가 발생했을 경우 모든 protocol이 정상적으로 에러 메시지를 보내도록 수정하였다.

  • <web-engine> 하위에 <default-error-page>와 <attach-stacktrace-on-error>가 정상 동작하지 않았던 버그 수정

    • <web-engine> 하위에 <default-error-page>와 <attach-stacktrace-on-error>가 동작하지 않았던 버그를 수정하였다.

  • hth 복수 설정한 webtob 연동시 에러 발생하는 버그 수정

    • webtob 연동 hth 갯수를 여러개로 설정하고 app deploy된 상태에서 ms 기동시 javax.management.InstanceAlreadyExistsException에러 발생하는 버그를 수정하였다.

  • ms 재기동 시, 지정한 vhost가 아닌, default virtual host에 app deploy를 하는 버그 수정

    • ms 재기동 시, app deploy를 지정한 vhost가 아닌, default virtual host에 하는 버그를 수정하였다.

  • domain socket webtob 연동되지 않는 버그 수정

    • webtob를 domain socket 로 연동시 정상동작하지 않는 버그를 수정하였다.

  • wjp v1 연결시 wsadmin에서 id가 null로 출력되는 버그 수정

    • wjp v1 연결시 wsadmin에서 id가 null로 출력되는 버그를 수정하였다.

  • wjp 연결 후 재기동 시 NPE 가 발생하는 버그 수정

    • wjp 연결 후 재기동 시 NPE 가 발생하는 버그를 수정하였다.

  • 서버 생성 시 등록되는 SERVER-HTTP 리스너가 삭제되지 않는 버그 수정

    • SERVER-HTTP 리스너가 삭제 가능하도록 버그를 수정하였다.

2.3.11. Transaction

  • transaction사이에 ejb 호출시 에러 발생하는 버그 수정

    • transaction사이에 ejb 호출시 에러 발생하는 버그를 수정하였다.

2.3.12. HostManager

  • 멀티노드 환경에서 hostmanager로 서버 기동된 경우 master로부터 설정을 받지못하는 버그 수정

    • 멀티노드 환경에서 hostmanager를 통해 서버가 기동된 경우 master로 부터 설정을 받지못하는 버그를 수정하였다.

  • hostmanager를 통해 서버 기동시 password 노출되는 버그 수정

    • hostmanager를 통해 서버 기동시 로그에 password가 노출되는 버그를 수정하였다.