제6장 JEUS 7 Fix#1

내용 목차

6.1. 신규 기능
6.1.1. Deployment
6.1.2. JMS
6.1.3. Node Manager
6.1.4. Server
6.1.5. Web Engine
6.1.6. Tool
6.1.7. WebAdmin
6.1.8. WebService
6.2. 변경 기능
6.2.1. Deployment
6.2.2. Domain (DAS)
6.2.3. EJB
6.2.4. JDBC
6.2.5. JMS
6.2.6. JNDI
6.2.7. Security
6.2.8. Server
6.2.9. Transaction
6.2.10. Web Engine
6.2.11. Session Server
6.2.12. Tool
6.2.13. Transaction
6.2.14. WebAdmin
6.2.15. CDI
6.3. 버그 수정
6.3.1. Deployment
6.3.2. EJB
6.3.3. Server
6.3.4. Web Engine
6.3.5. Transaction
6.3.6. WebService
6.3.7. CDI

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

6.1. 신규 기능

본 절에서는 JEUS의 신규 추가사항에 대하여 설명한다.

6.1.1. Deployment

  • List를 이용하여 한번에 다수의 Application에 대한 Install/deploy/undeploy/start/stop 기능 추가

    • List를 이용하여 Application을 install할 수 있다(id는 줄 수 없다).

    • WebAdmin에서는 여러 Application 파일을 선택해서 install할 수 있다.

    • List를 이용하여 Application을 deploy할 수 있다.

    • WebAdmin에서는 install되어 있는 Application 여러 개를 선택해서 deploy할 수 있다(선택한 Application에 대한 deploy option은 모두 동일하게 적용된다).

    • Install은 jeusadmin에서는 list 형태로 install을 지원하지 않고 WebAdmin에서만 install할 때 체크 박스를 check해서 list 형태로 install이 가능하다.

  • EJB, Web, EAR에 대하여 Deployment Plan 기능 제공

    • 패키지 내부에 JEUS DD 파일 유무에 관계없이 Application 패키지 외부에 있는 임의의 설정(Plan)으로 Application을 deploy할 수 있는 기능을 제공한다.

    • WebAdmin에서 Deployment Plan 관리기능 및 deploy / distribute / redeploy에 대한 Plan 옵션을 제공한다.

    • Deployment Plan 기능을 사용할 경우 Plan으로 DD를 대체할 수 있다.

    • jeusadmin에 기존 domain.xml과 configuration plan을 merge하여 새로운 domain.xml을 만들어 주는 명령어를 제공한다.

  • Exploded Application을 압축해서 전송할 수 있는 기능 추가

    • Exploded Application을 압축해서 전송할 수 있는 staging 옵션이 추가되었다.

    • DAS에서 Remote MS로 exploded Application을 Type에 맞게 압축하여 서버로 전송 후 deploy할 수 있도록 만들어 주는 기능이 추가되었다.

    • Application 원본파일의 동기화를 책임지지 않으므로, Application 변경할 때 Redeploy를 명시적으로 수행해야 한다.

  • JEUS boot time deploy를 Group 단위로 concurrent 하게 진행하는 기능 추가

    • Boot Time 및 Runtime deploy할 때 Application들을 Concurrent하게 deploy가 진행하도록 수정되었다.

    • EAR의 경우는 내부 모듈들을 Concurrent하게 Deploy하도록 수정되었다.

6.1.2. JMS

  • Transaction Rollback이나 Recover되는 메시지가 다시 서비스될 때까지의 Delay를 설정할 수 있는 기능 추가

    • 기존의 Redelivery 기능은 재처리가 필요할 경우 즉시 재처리되었는데, 변경된 기능은 이 상황에서 interval을 설정하여 일정 시간동안 재처리를 delay시킬 수 있는 기능이 추가되었다.

    • 설정된 interval(단위:ms)만큼 redelivery를 지연시킬 수 있다.

  • 클라이언트 프로그램으로 설정해야 하는 일부 Attribute들을 서버 설정으로 강제로 Override하는 기능 제공

    • Override 대상은 time-to-live (expiration-time), time-to-deliver (schedule), priority, delivery-mode, redelivery-limit 등 이다.

  • JMS 서버 내에 존재하는 메시지들을 관리하는 기능 추가

    • Queue 또는 Topic에 대한 produce/consume를 suspend/resume하는 기능이 추가되었다.

    • Queue 또는 Durable Subscriber 내에 있는 "메시지 보기/메시지 삭제/메시지에대한 import/export" 기능과 메시지를 다른 Queue나 Durable Subscriber로 이동시키는 기능이 추가되었다.

  • Expiration Time이 설정된 경우 Timeout 된 Message 처리 방법 개선

    • 기존에는 Expiration Time이 경과된 Message를 무조건 삭제하던 것을 기본 동작인 "삭제"와 "Dead Letter Destination으로의 리다이렉트" 중에서 선택하여 사용할 수 있도록 개선되었다.

  • Dead Letter Destination을 Destination 별로 설정할 수 있는 기능 추가

6.1.3. Node Manager

  • JEUS Server를 컨트롤/모니터링하는 Node Manager 도입

    • 분리된 각각의 Node에서 동작하는 Server Process 관리 및 Local/Remote Server의 시작/종료, Fail Server의 Restart 등을 지원할 목적으로 추가되었다.

    • $JEUS_HOME/nodemanager/jeusnm.properties에 설정하며, nodes.xml 파일에 추가된 Node에 접근 가능하다.

    • DAS가 Node Manager의 관리를 받기 위해서는 Node Manager에 연결하고, Node Manager에서 서버를 실행해야 한다. Node Manager로 연결하고 DAS 기동 명령을 내려 Node Manager가 DAS를 기동하는 두 가지 명령을 한 번에 수행하도록 하는 명령어로 startDomainAdminServerNM 스크립트가 추가되었다.

    • 중요 기능은 Server Boot/Down, Server Monitoring, Patch 전달 등이 있다.

    • WebAdmin에 Node Manager를 위한 Java Node 설정 기능이 추가되었다.

6.1.4. Server

  • Configuration Backup을 rollback하는 Rolling Patch 기능 추가

    • Node Manager를 통해 도메인에 patch를 적용할 수 있는 기능으로 패치 적용, 제거, 패치정보 확인(apply-patch/remove-patch/patch-info) 기능이 있다.

    • 패치를 적용하거나 제거할 때 -rolling 옵션을 주면 서비스가 이중화되어있을 경우 장애없이 서비스를 할 수 있다.

    • Rolling Patch 중 오류가 발생하는 경우 Rollback 기능이 있으며, CONTINUE, ROLLBACK, STOP 3가지 옵션을 지원한다.

    • WebAdmin에 Rolling Patch를 위한 화면이 추가되었다.

      백업된 Configuration 목록에서 원하는 백업을 선택하여 선택한 백업으로 rollback할 수 있다.

      (WebAdmin의 Lock을 얻은 뒤 작업해야 하며, 완료 후 Activate해 주어야 반영된다.)

    • jeusadmin에도 Rolling Patch 관련 명령어가 추가되었다.

  • Server를 Standby 상태까지만 부팅시키는 기능 추가

    • 운영 중 새로운 서버를 추가할 때 추가된 서버가 RUNNING 상태까지 boot되면 바로 클라이언트의 요청을 받기 때문에 오류가 발생할 수 있는데, 이러한 문제를 막기 위하여 Standby 상태까지만 booting시키는 기능이 추가되었다(-standby 옵션).

    • 이후 add-Application-target 명령으로 Application의 target에 신규 추가된 서버를 추가하고, Server를 start시키면 Application request를 실패없이 처리할 수 있다.

  • Memory Monitor Service에서 JEUS가 ratio 이상 memory를 사용할 경우 HeapDump 생성 기능 추가

    • JEUS 내부에서 jmap 명령을 실행하여 HeapDump를 생성하는 명령으로 File 이름은 "HeapDump_연월일시간.bin"으로 로그파일은 "$SERVER_HOME/logs"에 남긴다.

    • IBM JDK에는 jmap 명령이 존재하지 않으므로 jvm-option에 필수적으로 -Xdump:heap:file 과 같은 프로퍼티를 설정해 주어야만 HeapDump를 생성할 수 있다.

  • WebAdmin background deploy 기능 추가

    • Booting 속도 향상을 위하여 boot 시점에 fake WebAdmin을 deploy하고 background에서 정식 WebAdmin을 graceful redeploy로 기동하는 기능이 추가되었다.

  • 관리자가 서버를 내리지 않고 WebAdmin의 접근을 제어할 수 있는 기능 추가

    • jeusadmin에서 disable-WebAdmin/enable-WebAdmin 명령을 수행할 때 동적으로 적용할 수 있는 기능이 추가되었다.

  • 서버의 CPU Monitoring Service 및 Process CPU Monitoring Service 추가

    • Server의 CPU 및 Process별 CPU 사용률을 모니터링하는 기능이 추가되었다.

    • 'jeus.server.cpumonitor.enabled=false'로 서버의 CPU 모니터링 사용 여부를 설정하고 'jeus.server.cpumonitor.interval=60000'로 서버의 CPU 모니터링 주기를 설정한다.

    • 'jeus.server.process.cpumonitor.enabled=false'로 현재 Process의 CPU 사용률에 모니터링 사용 여부를 설정하고, 'jeus.server.process.cpumonitor.interval=20000'으로 모니터링 주기를 설정한다.

    • 이 기능은 Sun JDK에서만 사용할 것을 권고한다.

  • MS 기동시 MS를 기동하는 Java 명령어 앞에 옵션을 넣을 수 있는 기능 추가

    • domain.xml의 domain/servers/server/user-interceptor/preceding-command에 설정하면 MS를 기동할 때 맨 앞의 JAVA 명령어 앞쪽에 옵션을 추가한다.

    • preceding-command에 XXX를 추가한 경우 'XXX java ~~~' 형태로 명령어가 구성된다.

  • JVMMBean을 통해 시스템 정보를 추가 제공하기 위하여 sys-info command 추가

    • sys-info에서는 process, cpu, memory, jvm 정보를 조회할 수 있으며, open source인 SIGAR 라이브러리를 활용하여 추가 정보를 제공한다.

  • Production Mode 설정 기능 추가

    • 개발 생산성, 성능, Memory leak 등에 영향을 줄 수 있는 기능을 분류하여 개발환경(Developnemt Mode)과 운영환경(Production Mode)을 분리하는 기능이 추가되었다.

6.1.5. Web Engine

  • jeusadmin에서 서버 주소 및 포트 번호 변경을 위한 명령어(modify-webtob-connector 및 modify-tmax-connector)가 추가되었다.

  • thread-info 명령에서 웹 애플리케이션 이름을 주면 해당 애플리케이션이 가지고 있는 Asynchronous Processing을 위한 Thread Pool(async background thread pool, async dispatch thread pool)의 상태와 통계를 보여주는 기능이 추가되었다.

  • Application에서 ThreadLocal 변수를 이용할 경우 Memory leak과 OOME를 막는 기능 추가

    • Application에서 ThreadLocal 변수를 이용할 경우 발생 가능한 Memory leak (특히 ThreadLocal에서 ContextLoader나 WEBAPP instance를 잡고있는 경우 undeploy/deploy/reload를 수행할 때 Memory leak 발생 가능)에 의하여 OOME가 생길 가능성이 커지는데, 이런 현상을 방지하는 기능을 추가하였다.

    • Web Engine 속성(<web-engine>/<properties>)에 key(jeus.servlet.prevent-forcibly-threadlocal-memoryleak), value(true/false) 형태로 설정한다.

  • jeusadmin에서 특정 Web Listener Thread Pool 전체의 Stack Trace를 확인할 수 있는 기능 추가

    • jeusadmin에서 특정 Web Listener Thread Pool 전체의 Stack Trace를 확인할 수 있는 기능이 추가되었다.

    • 다음과 같이 사용할 수 있다.

      strace -server [ServerName] -li [Listener-Name]
  • Web Listener Thread Pool 전체에 대한 Interrupt 기능 추가

    • interrupt-thread 명령에 -li 옵션을 제공해서 Web Listener Thread 전체에 interrupt를 걸 수 있는 기능이 추가되었다.

  • WebtoB로부터 전송받은 SSL 클라이언트 인증서 정보 제공 기능 추가

    • WebtoB 4.1.5.2부터 추가되는 기능으로 WebtoB가 JEUS로 'WJP-SSL-SESSION-ID WJP-SSL-CIPHER WJP-SSL-CIPHER-USEKEYSIZE WJP-SSL-클라이언트-CERT'라는 이름의 HTTP 헤더로 SSL 정보를 보내주면 JEUS에서는 이를 읽어서 HttpServletRequest#getAttribute()로 제공한다.

  • max-thread-active-time을 넘긴 Active Thread들에 대한 interrupt가 발생하는 경우 해당 Thread의 Stack Trace를 로그에 남기는 기능이 추가되었다.

6.1.6. Tool

  • 기존의 서버 설정을 복사하여 새로운 서버를 작성하는 기능 추가

    • Server name, node-name listen-address listen-port는 새로 입력하지 않으면 기존의 설정을 그대로 사용하여 boot할 때 오류가 발생할 수 있으며, name은 입력하지 않으면 자동으로 임의의 이름을 입력해 준다.

  • Web Engine 설정 추가/수정/삭제 명령어 추가

    • 다음과 관련된 명령어들이 추가되었다.

      • add/modify/remove 명령어 추가 : encoding, properties, response-header, cookie-policy 설정

      • modify 명령어 추가 : jsp-engine 설정

      • modify-web-engine-configuration option 추가 : default-error-page, attach-stacktrace-on-error, async-timeout-min-thread 설정

  • Ant Task 기능 추가

    • Node Manager를 사용할 경우 Ant Task를 이용하여 DAS/MS를 Start/Shutdown하는 기능이 추가되었다. Local/Remote 장비에 대하여 모두 수행 가능하다.

    • Deployment 관련 Task(install, deploy, start, stop, undeploy, redeploy, uninstall, addtarget, removetarget)가 추가되었다.

  • jeusadmin 명령어 추가

    • MS의 JVM Option을 추가/수정/삭제할 수 있는 명령을 추가하였다.

      server/jvm-config/jvm-option에 설정되는 Option을 추가/삭제/수정할 수 있는 기능으로 "기존의 설정" 내용이 domain.xml의 jvm-option 태그 단위로 완전하게 일치하지 않으면 명령이 수행되지 않는다.

    • JEUS Logger 사용 여부를 on/off하는 명령이 추가되었다.

  • Independent MS에서 appinfo 확인 기능 추가

    • MS가 INDEPENDENT Mode인 경우 MS에서도 DAS와 마찬가지로 Application-info 명령으로 appinfo를 확인할 수 있는 기능이 추가되었다.

  • appcompiler에서 EAR precompile할 때 EJB 또는 웹만을 선택할 수 있는 옵션 추가

    • appcompiler에서 EAR precompile할 때 EAR 내의 EJB 또는 웹만을 선택하여 컴파일할 수 있는 기능이 추가되었다.

    • -ejbonly -webonly으로 EJB와 웹 모듈을 선택할 수 있다.

  • appcompiler를 사용하여 JSP를 컴파일할 때 다수의 Thread를 이용하여 컴파일할 수 있는 기능 추가

    • appcompiler를 사용해서 -j 옵션으로 JSP 파일들을 컴파일할 Thread 갯수를 조절하여 다수의 Thread를 이용하여 컴파일할 수 있다..(기본값 : 1)

6.1.7. WebAdmin

  • system-info command에 대한 monitoring page 추가

    • CPU/Process/JEUS Memory/JEUS JVM 정보를 monitoring할 수 있다.

    • 자동 refresh를 10s/30s/1m 간격으로 설정할 수 있다.

  • domain 설정 변경 후 Activate할 때 변경 내용에 대한 comment 를 입력하는 기능이 추가되었다.(<domain>/<description>)

  • 환경 파일 export/import 기능 추가

    • WebAdmin에서 현재 사용자가 보고 있는 domain.xml을 XML로 다운로드할 수 있는 export 기능과 사용자가 수정한 domain.xml을 반영하는 Import 기능이 추가되었다. 단, Import 기능은 Lock & Edit 모드에서만 사용 가능하다.

  • File Navigation Tag 추가

    • WebAdmin이 deploy된 서버의 System File을 선택할 수 있는 기능이 추가되었다.

  • JMS Message View 기능 추가

    • JMS Monitoring 기능 강화를 위하여 Message View 기능이 추가되었다.

    • WebAdmin의 JMS Monitoring 화면에 메시지에 대한 view, edit, import, remove, move, export 기능을 제공한다.

    • Destination에 대한 view, edit, import, remove, move, export와 Produce/Consume에 대한 Suspend, Resume 기능을 제공한다.

    • Durable Subscriptions에 대한 view, remove, move, export, cluster 기능을 추가 제공한다.

    • edit의 경우 messageType이 Text 인 경우만 제공한다.

  • 권한에 따른 WebAdmin UI 접근 제어 기능 추가

    • Role Permission 설정에 따라 WebAdmin UI 기능에 대한 접근을 제한하는 기능이 추가되었다.

    • 접근제한 항목으로는 URL, 메인 메뉴, Sitemap이 있으며, 이 중 메인 메뉴는 설정된 권한에 따라 Login할 때 일부 항목이 생략된다.

  • Async Thread 모니터링 기능 추가

    • WebAdmin에 Async Thread 모니터링 기능이 추가되었다.

6.1.8. WebService

  • JAX-RS 관련 기능 추가

    • JAX-RS를 사용하여 local interfaces를 사용하는 EJB를 RESTful View로 노출할 수 있는 기능이 추가되었다.

    • JAX-RS를 사용하여 no-interface EJB를 RESTful View로 노출할 수 있는 기능이 추가되었다.

    • JAX-RS Resource에서 @javax.ejb.EJB injection을 사용할 수 있는 기능이 추가되었다.

  • Maven plugin 지원기능 추가

    • JAX-WS tool인 wsimport, wsgen 명령을 Maven plugin을 이용해 실행할 수 있는 기능이 추가되었다.

  • Serlvet 3.0 Asynchronous Servlet을 기반으로 Asychronous Web Services 지원기능이 추가되었다.

6.2. 변경 기능

본 절에서는 JEUS의 모듈별 변경 사항을 정리한다.

6.2.1. Deployment

  • EJB, EAR graceful redeployment 지원

    • Global ENV, Bean에 대한 Application 버전별 bind/lookup이 가능하다.

    • Old EJB에 대한 Stub을 들고 있는 클라이언트의 경우 Redeploy가 완료된 후부터는 New EJB에 대한 Stub을 다시 가져와 동작한다

  • undeploy의 기본 동작이 graceful undeploy로 변경되었다.

6.2.2. Domain (DAS)

  • domain.xml의 백업파일 관리 정책 변경

    • 기존에 domain.xml과 같은 위치에 백업 파일을 만들던 것을 '.history' 디렉터리 아래에 작성하도록 변경되었다.

    • 백업 파일의 이름이 'domain_yyyymmdd.xml'에서 'domain_yyyymmdd_HHMMSS.xml'로 변경되었다.

    • 백업 파일의 개수를 제한할 수 있는 기능이 추가되었다.

      DAS에만 설정하며 System Property로 'jeus.server.configfile.backup.size=50'와 같이 설정한다.

  • Application의 resync 기능 개선

    • 이미 deploy 된 Application의 파일 변경 여부를 확인하여 변경된 경우 redeploy하는 기능이 추가되었다(MS가 INDEPENDENT Mode에서 DEPENDENT Mode로 변환되는 경우에도 동작한다).

    • app resync할 때 failed Application과 state가 바뀐 Application, 이미 deploy되어 있는 Application에 대해서 Application 파일의 resync 작업을 진행한다.

6.2.3. EJB

  • IIOP rmic 수행할 때 -vcompat option을 넣을 수 있는 기능 추가

    • '-Djeus.ejb.compiler.rmic.vcompat=true'로 설정하면 컴파일할 때 -vcompat 옵션이 추가된다.

  • DB Vendor Type에 TIBERO 추가

    • jeus-ejb-dd Vendor Type에 TIBERO가 추가되었다.

6.2.4. JDBC

  • 서버가 Cluster에 포함될 경우 Cluster에 등록된 데이터소스만을 사용하도록 기능 변경

    • 서버가 Cluster에 속한 경우 서버에 설정된 데이터소스 설정은 무시되고 서버가 속한 Cluster에 설정된 데이터소스만을 사용하도록 변경되었다.

    • Cluster에서 빠져나올 경우 Cluster에 설정된 데이터소스 설정은 무시되고 서버에 설정된 데이터소스 설정만을 사용한다.

  • 데이터소스를 설정할 때 기본 Binding 설정 변경

    • 기존에는 Remote Bind가 기본 동작이었으나 Target 서버에 default로 Local bind하도록 변경되었다.

    • 'System Property jeus.jdbc.data-source-local-binding=false'로 설정하면 데이터소스를 기본으로 Remote bind할 수 있다.

  • JDBC/JCA Connection pool을 내부적으로 Group 단위로 관리하도록 변경

    • 같은 DB 서버에 대하여 JDBC Connection Pool을 서로 다른 복수의 ID/PWD에 대한 그룹으로 관리하도록 변경되었다.

    • 그룹별 Connection 사용량에 따라 Connection Pool의 개수를 효율적으로 조정/관리하는 기능이 추가되었다.

  • Cluster 데이터소스의 Selector API 및 동작 방식 변경

    • DataSourceSelector API를 interface로 새로 정의하였다.

    • DataSourceSelector를 사용할 경우 Failover될 때 JEUS가 자체적으로 데이터소스를 선택하지 않고 DataSourceSelector에서 Select된 데이터소스를 사용하도록 변경되었다.

6.2.5. JMS

  • JMS Failover 기능 향상

    • JMS Failover가 n by m Active-Standby Failover 형태로 기능이 향상되었다.

    • 기존의 Dedicated Active-Standby방식의 Failover를 확장하여 n by m의 자유로운 구성의 Failover를 지원한다.

    • m = 0일 때 Active-Active Failover가 된다.

6.2.6. JNDI

  • ClusterManager lock 개선

    • 기존에는 JNDI Connection, Operation을 할 때마다 연결하려고 하는 서버가 Failed인지 아닌지를 확인하는데 사용되는 모든 Method에 Synchronized가 설정되어 Lock이 광범위하게 잡히는 문제를 개선하였다.

6.2.7. Security

  • AES_128_CBC, AES_256_CBC cipher suite의 SSL Handshake 시점에 key size를 verification하는 로직이 추가되었다.

6.2.8. Server

  • start-domain, start-cluster, stop-domain, stop-cluster 명령이 concurrent하게 동작하도록 변경되었다.

  • boot-time deploy할 때 변경된 Application만 파일 전송 받도록 수정되었다.

6.2.9. Transaction

  • tx-log-dir 기본경로명 변경

    • <tm-config>/<tx-log-dir>의 설정이 기존의 ${SERVER_HOME}/.workspace/txlog에서 ${SERVER_HOME}/.workspace/tmlog로 최 하위 경로가 txlog에서 tmlog로 변경되었다.

    • 경로에 포함되어 있는 ${SERVER_HOME}/.workspace/tmlog는 환경변수가 아닌 전체가 하나의 문자열이기 때문에 실제 경로가 아닌 예약어이다.

      따라서, tmlog가 쌓이는 경로를 사용자 임의의 경로로 옮기려고 한다면 전체 Full Path를 적어주어야 한다. ( 예 : /home/jeus/tmlog )

6.2.10. Web Engine

  • ResourceServlet을 Spring mvc:default-servlet-handler에서 사용가능하도록 수정

    • 기존의 WorkerServlet을 대체하는 기능으로, JEUS에서 제공하는 default servlet인 jeus.servlet.servlets.ResourceServlet을 Spring mvc:default-servlet-handler에 default-servlet-name으로 설정해서 사용할 수 있다.

  • Servlet Async Processing Timeout 기본값을 30초로 변경

    • AsyncServlet이 실행되는 시간(avctive)이 Async Processing이고 이 시간까지 종료되지 않고 있으면 해당 Thread를 종료한다.

  • add-webtob-connector 명령에 도메인 소켓 사용 관련 옵션(dsocket, wbhome, ipcport)이 추가되었다.

  • Web Listener의 설정에서 불필요하게 설정되었던 <scheme> 태그 제거

  • NIO를 사용하는 경우 HTTP, TCP, AJP Listener 요청 처리 큐 처리 방법 개선

    • NIO를 사용(use-nio=true)하는 경우 HTTP, TCP, AJP Listener에서 요청 처리 큐가 꽉 차면 커넥션을 닫고, 서버 로그에 해당 사항을 WARNING 레벨로 남기도록 수정되었다.

  • HTTP Listener의 keep-alive 설정 제거

    • HTTP Listener의 keep-alive 설정이 connection-type 설정으로 대체되어 제거되었다.

  • Stuck Thread를 체크하는 주기 설정 기능 추가

    • Stuck Thread 체크 주기를 설정하는 기능이 추가되었다. domain.xml의 <server>/<system-thread-pool> 아래에 설정되며, 기본값은 5분이다.

  • Web Container에서 사용하는 Thread Pool 구현체 변경에 따라 max-wait-queue 및 step 설정 제거

  • Web Engine의 동적변경 가능한 설정이 추가

    • Virtual Host 추가/삭제에 대한 동적 반영되었다.

    • 추가된 Virtual Host의 host name 동적 추가 및 삭제의 동적 반영하도록 수정되었다.(삭제시 404에러가 발생할 수 있다는 경고 메시지 출력)

    • web-connections 설정 동적 변경이 확대되었다. (tcp, tmax 는 dispatch-config-class가로딩 가능한 경우에만 동적변경가능)

    • web-engine 설정 중에 동적변경 가능설정이 확대되었다.

      • 새로운 Web Connection (단, TCP Listener, Tmax Connector 제외)

      • Web Listener의 Thread Pool min/max 수정

      • Web Engine의 모니터링 주기 수정

      • Web Engine Accesslog on/off 및 로그 포맷 변경

  • AJP13 SSL attribute를 지원하도록 수정

    • Apache, modjk 등에 클라이언트 인증서 Export 설정을 할 경우 JEUS로 클라이언트 인증서 및 SSL Cipher 등의 정보를 전달받을 수 있다.

  • webtob-connector 설정 중 use-pipe 설정 삭제

    • webtob-connector 설정 중 use-pipe 설정을 삭제되었다. (domain-socket-address 설정이 존재하면 당연히 PIPE를 사용함)

  • JSP 컴파일을 메모리 상에서 진행하도록 수정(in-memory jsp compilation)

    • JSP 컴파일이 필요할 때 서비스 스레드에서 '.java', '.class' 파일을 생성하지 않고 메모리 상에서 JSP 파일을 클래스로 만들어서 서비스하도록 수정되었다.

    • '.java', '.class' 파일은 필요한 경우가 있기 때문에 백그라운드 스레드를 이용해서 파일 시스템에 기록한다. 단, JSP 파일에 대한 '.java' 컴파일이 실패했을 경우에는 서비스 스레드에서 .java 파일을 파일 시스템에 쓴다.

  • 특정 Error Status에 대해서 응답할 때 Header에 connection: keep-alive를 추가해 주는 기능 추가

    • jeus-web-dd.xml의 <keep-alive-error-response-codes> 태그에 원하는 status code를 ","로 구분하여 추가하면 설정된 status code를 응답할 때 "connection: keep-alive"를 추가하여 응답하는 기능이 추가되었다.

  • 2GB 이상의 데이터 전송을 지원하기 위하여 long type content-length를 사용하도록 수정

    • Servlet 표준에서 int type의 content length를 지원하기 때문에 Servlet에서 content-length header 세팅시에 2GB 이상의 데이터를 표현할 수 없는 문제가 있다.

    • 이를 해결하기 위하여 명시적인 content-length 설정을 통해서 2GB 이상의 데이터를 주고받을 수 있도록 수정되었다.

6.2.11. Session Server

  • Command에서 Option에 따른 오류를 로그로 출력하도록 변경

    • Session 관련 Command에 잘못된 입력값이 들어온 경우 Command Exception으로 관리하고 입력값이 무시되었다는 내용의 로그를 출력하도록 수정되었다.

  • Session Manager Fail 후 백업 테이블을 재구성하기 전까지 delay를 설정하도록 수정

    • Session Manager가 Fail된 이후 백업 테이블을 재구성하는 데까지의 시간을 설정하여 백업 서버가 없이 유지되는 시간을 최소화하도록 수정되었다.

    • Cluster에 failover-delay, restart-delay로 초 단위로 설정한다.

6.2.12. Tool

  • Server 관리 제어 명령을 서버 list로 수행할 수 있도록 변경

    • start-server, stop-server 등 서버 관리 제어 명령을 서버 list 형태로 다수의 서버를 대상으로 수행할 수 있도록 변경되었다.

    • concurrent start/stop/dump/gc/meminfo/resume/suspend 명령에 대하여 List 형태로 다수의 MS를 대상으로 명령을 수행할 수 있다.

  • jeusadmin one-step 명령어가 개선

    • jeusadmin one-step 명령어를 사용할 때 한 번에 여러 개의 명령어을 사용할 수 있도록 수정되었다.

    • jeusadmin의 Login 정보 이후의 실제 명령어 부분 전체를 큰따옴표(" ")로 둘러싼 뒤 개별 명령어 사이를 세미콜론(;)으로 구분하여 다수의 명령어를 사용할 수 있다.

      (예: jeusadmin -u jeus -p jeus "serverinfo;help deploy-Application" )

6.2.13. Transaction

  • OTS 트랜잭션을 전파할 때 Timeout 시간 처리방법 변경

    • OTS 트랜잭션이 전파될 때 -Djeus.tm.propagation.recalculated-timeout=true를 설정하면 active-timeout을 소요된 시간만큼 감소시켜 넘겨주도록 변경되었다.

    • 하위 호환성을 위하여 기본값은 false이다.

  • Standalone 클라이언트에서 java:comp/UserTransaction를 다른 이름으로 lookup할 수 있도록 기능이 개선

    • java:comp/UserTransaction을 타 WAS(Web Application Server)와 같이 별도의 이름(java:/UserTransaction)으로 호출 가능하도록 하였고, 기존의 이름도 클라이언트에서 호출 가능하도록 허용한다.

6.2.14. WebAdmin

  • Application 관리 기능에 대해서 복수의 Application이 대상이 되도록 변경

    • Application 관리 기능이 복수의 Application에 대하여 동작하도록 수정되었다.

    • 복수의 Application를 지원하는 명령은 start/stop/deploy/undeploy/install/uninstall 등이며, State가 INSTALLED인 경우 State가 INSTALLED인 다른 Application와는 동시 선택이 가능하지만 State가 다른 Application과 함께 선택할 수 없다.

  • 데이터소스 설정하는 경우 UI 편의성이 개선

    • WebAdmin에서 데이터소스를 설정할 때 각종 정보를 직접 입력하지 않고 옵션들 중 선택하는 형태로 변경되었다.

6.2.15. CDI

  • JSF에서 CDI를 사용할 수 있도록 수정되었다.

6.3. 버그 수정

본 절에서는 JEUS의 모듈별 버그 수정사항을 정리한다.

6.3.1. Deployment

  • Graceful Redeploy를 수행한 뒤 rollback하여 old Application으로 돌아간 경우 Application Path가 바뀌지 않아 재기동할 때 Old Application이 적용 안 되는 문제 수정

    • Graceful Redeploy를 수행했다가 rollback할 경우 Application Path가 원복되도록 수정되었다.

    • Graceful Redeploy를 수행하면 domain.xml에 Application 정보에 Application path가 new Application으로 바뀌는데, rollback할 경우 Old path로 바꿔주어 Old Application이 수행되도록 수정되었다.

  • Graceful Redeploy 이후 웹 애플리케이션 통계 정보를 확인할 수 없는 문제 수정

    • Graceful Redeploy 실행 후 Old Application을 undeploy하면 jeusadmin에서 st -r 명령으로 확인해도 Application의 정보가 출력되지 않는 문제가 수정되었다.

6.3.2. EJB

  • EJB deploy할 때 클라이언트 View를 위한 jar 파일에 필요한 클래스들이 모두 포함되지 않는 문제 수정

    • EJB deploy할 때 클라이언트 view를 위한 jar 파일에 일부 클래스(특히 IIOP 관련 클래스들)가 포함되지 않는 문제가 수정되었다.

    • EJB 2.x 기준으로 EJB는 deploy가 성공될 때 클라이언트 view jar file 안에 Home, Remote Interface 및 RMI Stub 들만 생성되나, IIOP 통신을 위한 _IIOP Class 및 Tie Class 등이 필요하다(JEUS 5에서는 제대로 포함되어 있었음).

    • 'System Property jeus.ejb.compiler.rmic.enable=true'일 경우 예전처럼 rmic를 수행하여 Stub 관련 클래스들을 generate 하도록 수정되었다.

6.3.3. Server

  • Web Engine의 동적 설정 반영 사항을 서버의 Runtime 설정 정보에 업데이트하지 않는 문제 수정

    • Web Engine의 동적 설정 반영사항(thread min, max 변경 등)이 Runtime 정보에 업데이트되지 않는 문제가 해결되었다.

6.3.4. Web Engine

  • WebtoB에서 요청을 전달할 때 보내는 context path 속성을 무시 하도록 수정

    • WebtoB에서 JEUS로 요청을 전달할 때 보내는 context path 속성 때문에 페이지 호출에 문제가 발생하여 해당 속성을 무시하도록 수정하였다(JEUS 6.0 과 동일하게 동작하도록 수정됨).

  • Default Servlet (ResourceServlet)에서 공백 문자가 있는 파일을 서비스하지 못하는 문제 수정

    • Default Servlet (ResourceServlet)에서 공백문자(" ")가 있는 파일을 서비스하지 못하는 문제가 수정되었다.

  • Application 상태가 STOP일 경우 503 Error Page 처리가 되지 않고 NPE가 발생하는 문제 수정

    • Application 상태가 STOP일 경우 설정된 Error Page가 없으면 503으로 응답하며, 설정된 Error Page가 있는 경우는 Error Page로 이동하지 않고 NPE가 발생하는 문제가 수정되었다.

  • Web Listener에 Server Listener의 read-timeout이 의도대로 적용되지 않는 문제 수정

    • postdata-read-timeout 값이 설정되면 기존의 read-timeout 값이 설정된 postdata-read-timeout 값에 맞춰 변경되었다가 요청 종료 후 기존의 read-timeout 설정값으로 복원되어야 하는데, 복원되지 않던 문제가 해결되었다.

  • ServletResponse.getCharacterEncoding()이 기본적으로 ISO-8859-1을 리턴하지 않는 문제 수정

    • Character Encoding이 설정되지 않은 경우 ServletResponse.getCharacterEncoding()이 ISO-8859-1을 리턴하도록 수정되었다.

  • http-listener의 postdata-read-timeout이 적용되지 않는 문제가 수정되었다.

  • AJP13, WebtoB의 ServletRequest.getRemotePort() 구현 버그 수정

    • ServletRequest.getRemotePort()이 기존에 -1을 리턴하던 것을 정상적인 Remote Port가 리턴되도록 수정하였다.

  • Servlet Event Listener XXXDestroyed 이벤트 오류 수정

    • ServletContextListener, ServletRequestListener, HttpSessionListener의 Destroy Event가 스펙에 맞도록 Reverse Order로 발생하도록 수정되었다.

  • HTTP Listener에서 max-keep-alive-request 지원 보완

    • HTTP Listener가 Blocking I/O를 사용할 때 특정 클라이언트가 HTTP Thread를 독점하여 다른 Thread의 요청을 처리하지 못하는 문제를 막기 위하여 최대 요청건수를 제한하도록 수정하였다.

6.3.5. Transaction

  • OTS resource에 TX가 전파되었을 때 설정 값의 active Timeout을 설정해 주지 못하는 문제 수정

    • OTS 트랜잭션이 전파될 때 domain.xml에 설정되어 있는 active-timeout 값이 아니라 default 값인 10분으로 무조건 설정되는 문제가 수정되었다.

6.3.6. WebService

  • java2wsdl tool에서 jaxrpc-mapping 파일이 생성되지 않는 문제 수정

    • Linux 환경에서 Ant를 이용하여 java2wsdl를 실행할 때 jaxrpc-mapping file(mapping.xml)이 생성되지 않는 문제가 해결되었다.

  • Message Serialization이 한 번 더 수행되면서 Message Serialization이 깨지는 문제 수정

    • WebService Log를 FINEST로 설정할 경우 Message Serialization이 깨지면서 클라이언트 Handler가 정상 동작하지 않는 문제가 수정되었다.

  • EJB-based JAX-WS에서 Service Endpoint Address 문제 수정

    • jeus-webservices-dd.xml의 설정으로 Service Endpoint Address의 Context가 수정되지 않는 문제가 해결되었다.

6.3.7. CDI

  • 웹 모듈에서 CDI Managed Bean Instance가 동작하지 않는 문제 수정

    • @Inject과 같은 CDI Managed Bean Instance(annotation)가 웹 모듈에서 동작하지 않은 문제가 해결되었다.

  • Runtime에 중복된 Annotation Search 방지

    • Runtime에 Annotation Processing이 필요할 때 Class에 대한 중복된 Annotation Search(어노테이션 검색)을 하지 않도록 수정되었다.