제2장 JEUS 8

내용 목차

2.1. 신규 기능
2.1.1. Specification 변경
2.1.2. Servlet
2.1.3. Session Server
2.1.4. WebService
2.1.5. Security
2.1.6. Deployment
2.1.7. JMX
2.1.8. Server
2.1.9. Tool
2.1.10. Manual
2.2. 변경 기능
2.2.1. Server
2.2.2. Servlet
2.2.3. Session Server
2.2.4. EJB
2.2.5. Security
2.2.6. JMS
2.2.7. WebService
2.2.8. JNDI
2.2.9. Network
2.2.10. JMX
2.2.11. Logging
2.2.12. NodeManager
2.2.13. Transaction
2.2.14. JSF

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

2.1. 신규 기능

JEUS 8에서는 Java EE 7의 주요 기능을 완벽히 지원함으로써, 개발 생산성을 획기적으로 향상 시켰다. 또한 Java EE 7에서 향상된 여러 기술을 사용하여, 보다 안정적인 환경을 제공한다.

2.1.1. Specification 변경

JEUS는 최신 버전 JEUS 8로 발전하면서 많은 신기술과 새로운 스펙이 적용되었다.

다음은 JEUS 6에서부터 JEUS 8에 이르기까지의 적용되는 J2EE 스펙을 간단하게 보여준다. 스펙의 내용에 따른 변경 사항에 대해서는 각각의 명시된 스펙을 참고한다.

SpecJEUS 6JEUS 7JEUS 8
J2EEJava EE 5Java EE 6Java EE 7
WebServerWebtoB 4.1WebtoB 4.1WebtoB 5.0
HTTP1.0/1.11.0/1.11.0/1.1/2.0
CGI1.11.11.1
PHP3.x/4.x/5.x3.x/4.x/5.x3.x/4.x/5.x
SSLssl2/ssl3/tls1ssl2/ssl3/tls1ssl2/ssl3/tls1
WebSocket--1.0
Java API for JSON Processing--지원
Batch Applications for the Java Platform--지원
Concurrency Utilities for Java EE--1.0
EJB2.x/3.03.13.2
RMI-IIOP지원지원지원
JAF1.0.21.11.1
EJB to CORBA Mapping1.11.11.1
JCA1.51.61.7
JMS1.11.12.0
Common Annotations for the Java Platform1.01.11.2
JPA1.02.02.1
JavaMail API1.41.41.5
JTA1.11.11.2
JTS1.01.01.0
JNDI1.2.11.2.11.2.1
CDI-1.01.1
Bean Validation-1.01.1
Managed Beans-1.01.0
Interceptors-1.11.2
JSP2.12.22.3
Servlet2.53.03.1
JSF1.22.02.2
JSTL1.21.21.2
XSLT1.01.01.0
JDBC3.04.04.0
IBM MQ지원지원지원
Sonic MQ지원지원지원
J2EE Management1.11.11.1
J2EE Deployment API1.21.21.2
JAAS1.0.11.0.11.0.1
JACC1.11.31.5
JASPIC-1.01.1
JAXP1.3(JavaSE 6에 포함)(JavaSE 7에 포함)
StAX1.0(JavaSE 6에 포함)(JavaSE 7에 포함)
JAXB2.12.22.2
SAAJ1.31.31.3
Implementing Enterprise Web Services1.21.31.3
Web Service Metadata2.02.12.1
JAX-RPC1.11.11.1
JAX-WS2.12.22.2
JAX-RS-1.12.1
JAXR1.01.01.0
UDDI2.0/3.02.0/3.02.0/3.0
SOAP1.21.1/1.21.1/1.2
WSDL1.11.11.1
WS-I Basic Profile1.11.11.1
WS-Policy1.01.01.5
WS-Policy Attachment1.01.01.5
WS-Addressing-1.01.0
WS-Security1.0/1.11.11.1
WS-Security Policy1.21.21.2
WS-Trust1.31.31.4
WS-Secure Conversation1.31.31.4
WS-Reliable Messaging1.01.11.2
WS-AtomicTransaction-1.01.2
WS-Coordination-1.01.2
OTS지원지원지원
Java IDL API지원지원지원
IDE Tool지원미지원미지원
GUI Tool미지원미지원미지원
Web ToolWebAdminWebAdminWebAdmin
Monitoring ToolConsole Tool, WebAdminConsole Tool, WebAdminConsole Tool, WebAdmin
JDK5 / 66 (인증)7 (인증)

2.1.2. Servlet

  • CORS(Cross Origin Resource Sharing) 지원

    • 외부 리소스를 가져다 쓰는 경우의 보안문제를 해결하기 위하여 CORS를 지원한다.

  • HTTP/2(HTTP 2.0) 프로토콜 지원

    • HTTP/2(HTTP 2.0) 프로토콜을 지원한다.

  • Servlet 4.0 스펙의 일부 지원

    • Servlet 4.0 스펙 중 Server Push 기능만을 지원한다.

  • jeusadmin 명령어 추가

    • jeusadmin의 Web Listener command에 auto tuning 관련 옵션이 추가되었다.

      • add-web-listener, modify-web-listener에 -tauto, -tlimit 옵션이 추가되었다.

      • http-connection이 아닌 경우 적용되지 않는다.

    • HTTP/2 옵션 추가

      • HTTP/2 프로토콜 지원과 관련하여 jeusadmin에 관련 옵션이 추가되었다.

      • add-web-listener, modify-web-listener, show-web-engine-configuration과 같은 리스너 관련 명령어들에 HTTP/2 옵션이 추가되었다.

  • 대소문자를 구분하지 않는 File System을 위한 옵션 제공

    • Windows Server와 Linux Server를 함께 구성한 경우 대소문자가 다른 경우에도 같은 파일로 인식하는 경우가 발생하는 문제를 방지하기 위하여 기능이 추가되었다.

    • 파일의 존재 여부 외에 대소문자를 구분하여 확인할 수 있도록 하는 옵션을 추가하였다.

      -Djeus.servlet.useCaseInsensitiveFileSystem
  • jarscan.properties 파일 추가

    • JSP가 동작할 때 classpath의 모든 .jar에서 .tld 파일을 스캔하는데, 대부분의 .jar에는 .tld이 포함되어 있지 않다.

    • 이렇게 불필요한 스캔 작업을 줄이기 위하여 .tld 스캔에서 제외할 라이브러리 목록을 지정할 수 있는 기능이 있는데, 기존에는 하드코딩되어 있던 것을 외부 파일(JEUS_HOME/domains/jarscan.properties)로 분리하여 쉽게 업데이트 할 수 있도록 하였다.

  • JSESSIONID에 붙는 sticky session을 url 인코딩하지 않도록 하는 옵션 추가

    • JSESSIONID에 붙는 sticky session을 url 인코딩할 경우 엔진 이름을 base64 인코딩할 때 생기는 "="를 "%3D"로 인코딩하면서 WebtoB에서 Session Routing 기능이 동작하지 않는 문제가 생길 수 있다.

    • 이 문제를 방지하기 위하여 "="를 인코딩하지 않도록 변경되었으며, 이전 버전과 동일한 동작을 위하여 jeus.servlet.allowUrlEncodeJesssionId 옵션을 추가하여, 설정이 true인 경우에만 JSESSIONID를 인코딩하도록 하였다.

  • Node Java 기능 추가

    • 외부 서비스를 동작할 수 있도록 해주는 Service Servlet를 등록하고 관리하는 기능을 제공한다.

2.1.3. Session Server

  • Session을 access한 Attribute별로 update할 수 있는 기능 추가

    • Backup Level 설정에서 access 옵션이 추가되었고 해당 설정이 default 설정이 되었다.

    • Attribute 단위 업데이트를 수행하며, setAttribute, getAttribute의 Target이 업데이트된다.

  • Idle Time 기준으로 가지고 있는 세션 정보를 보여주는 명령 관련 옵션 추가 및 WebAdmin 모니터링 기능 추가

    • list-session 명령에서 target Manager의 정보만을 볼수 있는 옵션(-t)이 추가되었다.

    • list-session 정보를 WebAdmin에서 모니터링할 수 있는 화면이 추가되었다.

  • Sticky encoding의 encoding rule을 지원

    • BASE64(default), RAW 중 선택 가능하며 WebAdmin 및 jeusadmin에서 설정할 수 있다.

    • BASE64 모드는 Base64 암호화 알고리즘을 사용하며, RAW 모드는 인코딩 없이 doamin name, server name을 사용한다.

  • File passivation을 수행하는 옵션 및 trigger 추가

    옵션설명
    Single Folder File Limit하나의 폴더에 저장된 세션 파일의 갯수를 제한한다.
    Ratio세션 개수 및 세션의 메모리로 passivation을 진행할 때 얼마나 많은 세션을 passivation할지의 비율을 설정한다.
    Count Threshold세션이 일정 갯수 이상 메모리에 존재할 경우 세션의 일부를 파일에 내리는 작업을 수행한다.
    Memory Threshold세션이 일정 메모리를 차지할 경우 세션의 일부를 파일에 내리는 작업을 수행한다.
  • DOMAIN_WIDE 세션 클러스터 모드일 경우 애플리케이션을 디플로이하지 않더라도 리모트로부터 백업을 받을 수 있는 기능 추가

    • DOMAIN_WIDE 모드일 경우 아래 시스템 프로퍼티를 추가하면 더미 애플리케이션이 디플로이되어 백업 받을 수 있다.

      -Djeus.sessionmanager.receive.backup.despite.no.deploy=true

2.1.4. WebService

  • JAX-RS 관련 기능추가

    • JAX-RS Server-Sent Events 지원

      웹 환경에서 Server Push를 구현하기 위해 제안된 HTML 5의 Server-Sent Events(SSE)를 지원한다.

    • JAX-RS HTTP Basic Authentication 지원

      JAX-RS 클라이언트가 HTTP Basic Authentication를 요구하는 서버에 인증할 수 있도록 지원한다.

    • JAX-RS Asynchronous Processing 지원

    • JAX-RS JSON Processing 지원

  • JMS Transport에서 SAF 지원

    • JAX-WS JMS Transport에서 JMS Bridge를 통하여 SAF(Store-And-Forward)를 지원한다.

  • Server-Sent Events 기능 지원

    • HTML 5의 Server-Sent Events(SSE) 스펙을 지원한다.

      Server-Sent Events(SSE)는 웹 환경에서 Server Push를 구현하기 위해 제안된 표준 기술로, 의사 Server Push 기술인 Comet을 표준화한 기술이라고도 한다(Server-Sent Events, W3C Candidate Recommendation 11 December 2012). 자세한 내용은 https://www.w3.org/TR/eventsource/를 참고한다.

  • HTTP Basic Authentication 지원

    • JAX-RS 클라이언트가 HTTP Basic Authentication을 요구하는 서버에 인증할 수 있도록 한다.

    • javax.ws.rs.client.ClientRequestFilter를 구현하여 authentication header를 생성한다.

2.1.5. Security

  • Password validator 기능 추가

    • JEUS의 Password를 입력/수정하는 경우 일반적인 수준의 제약사항을 설정 가능하게 하여 Password 설정 관련 보안을 강화하였다.

    • Default Password Validator에는 특수문자/숫자/대(소)문자/최소글자수/최대글자수/ID포함불가 등의 기능이 있다.

    • 사용자 임의의 Password validator 추가를 위한 Custom Password Validator 기능도 함께 추가되었다.

2.1.6. Deployment

  • Library Deployment 기능 추가

    • DAS를 통해 Library Deployment 기능을 제공한다.

    • 기존에는 lib/shared/libraries.xml을 통해 같은 라이브러리라 하더라도 각자 서버에 lib을 위치시켰으나, Library Deployment 기능이 추가되어 parent-child 관계에서 발생하는 라이브러리 사용상의 문제 및 단일 classloader를 referencing하는 방법으로 리소스 사용을 최소화하였다.

2.1.7. JMX

  • Spring JMX 지원

    • Spring JMX에서 사용하는 기본 MBeanServerFactoryBean 동작에 맞춰서 JEUS MBeanServer를 정확하게 찾아서 사용할 수 있도록 MBeanServerFactoryBean 구현체를 작성하여 제공한다.

2.1.8. Server

  • server-log command에 검색 옵션으로 base time + end time 추가

    • server-log command를 이용하여 정해진 시간 동안 로그를 가져올 수 있는 방법이 추가되었다.

    • 기존에 JEUS 7에서 지원하는 server-log command는 현재는 검색하는 방법으로 start time부터 line 만큼 가져오는 것 만을 지원하였으나, base time + end time 형태로 일정 시간 안에 발생한 로그를 가져오는 기능이 추가되었다.

2.1.9. Tool

  • jeusadmin Script 모드에 -verbose 옵션 추가

    • jeusadmin을 script 모드로 사용하는 경우 script에서 출력한 값 이외에 기본 jeusadmin 결과 값이 함께 출력되어, 커맨드 창의 결과만을 사용해야 하는 경우 원하는 내용을 확인하기 어려웠다. 이러한 상황에서 사용할 수 있도록 -verbose 옵션을 추가하였다.

2.1.10. Manual

  • JEUS Network Library 매뉴얼 제공

    • JEUS Network Library 매뉴얼을 Java DOC 형태로 제공한다.

2.2. 변경 기능

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

2.2.1. Server

  • Native Library 관련 변경 사항

    • jeusadmin -licenseinfo 명령어를 수행할 때 seqno가 출력되도록 수정되었다.

    • expire date가 설정된 license를 체크할 수 있도록 수정되었다.

    • Cloud License가 추가되었다.

  • NIO 사용 구현체 및 AsyncServlet 제거

    • JEUS 5 및 6에서 구현한 NIO 사용 구현체(jeus.servlet.connector 이하) 및 AsyncServlet 을 제거하였다. 이와 관련되어 각 모듈에 포함되어 있던 NIO 관련 설정도 함께 제거되었다.

  • Boot-time 도메인 백업 기능과 pack-domain 명령어의 동작을 동일하게 변경

    • 도메인을 백업하는 2가지 방법에 약간의 차이가 있던 것을 동일하게 동작하도록 변경하였다(pack-domain 명령어 기준으로 통일).

  • 라이프 사이클 관련 스키마(library-ref) 변경

    • domain.xml의 라이프 사이클 관련 스키마(library-ref) 구조를 일반적인 형태인 element 추가로 변경하였다.

    • library-ref의 스키마 중 failon-error와 exact-match 항목이 attribute에서 element로 변경되었으며, 이와 관련되어 dependency가 있는 xml 설정들도 함께 수정되었다.

    • 변경 전 설정

      <library-ref failon-error="true">
          <library-name>test</library-name>
          <specification-version exact-match="true">11</specification-version>
          <implementation-version exact-match="true">22</implementation-version>
      </library-ref>
    • 변경 후 설정

      <library-ref>
          <library-name>test</library-name>
           <failon-error>true</failon-error>
           <specification-version>
               <value>11</value>
               <exact-match>true</exact-match>
           </specification-version>
           <implementation-version>
               <value>22</value>
               <exact-match>true</exact-match>
           </implementation-version>
      </library-ref>
  • 설정 파일 Lock 처리 개선

    • JEUS를 기동할 때 domain.xml 파일이 깨지는 문제를 방지하기 위하여 한 쪽 서버에서 파일을 읽는 동안 다른 서버에서 파일에 쓰지 못하도록 Lock을 공유한다.

    • 기존에는 Lock의 범위가 너무 넓어서 NodeManager를 이용하여 서버를 동시에 기동시킬 경우 전체 서버가 동시에 기동되지 못하는 경우가 있었는데, Lock의 범위 및 시점을 조절하여 이러한 문제점이 발생하지 않도록 개선하였다.

  • JSTL 라이브러리 버전업

    • JSTL 라이브러리를 기존의 1.2에서 1.2.5로 버전업하였다.

  • server-info 명령어에 표시되는 서버 가동시간 정확도 개선

    • server-info 명령어를 사용하는 경우 Status 항목에 서버 상태와 함께 표시되는 가동 시간을 좀 더 정확하게 보여줄 수 있도록 개선하였다.

    • 기존에는 서버 상태를 갖고 있는 ServerStateInfo 객체를 생성할 때 시간을 기준으로 가동 시간을 계산하여 DAS를 재기동하면 시간이 초기화되었으나, SCF(GMS)로부터 시작 시간을 얻어온 후 좀 더 정확한 가동 시간을 계산하여 출력하도록 개선하였다.

    • 시작 시간을 얻을 수 없는 경우에는 상태만 출력한다.

  • ASM ClassVisitor를 ASM 5로 버전업

    • JDK 8에서 ASM을 사용하기 위하여 ASM 버전을 ASM 5로 버전업하였다.

2.2.2. Servlet

  • listener 및 connector의 use-nio 설정 제거

    • 리스너의 NIO는 JEUS 7까지만 지원하고 JEUS 8부터는 지원하지 않기 때문에 이에 맞춰 제거되었다.

    • webtob-connector의 use-nio 및 관련 thread-pool 설정, tmax-listener의 use-nio 및 selector-count 설정이 제거되었다.

  • webtob-connector의 wjp-version 기본값을 2로 변경

    • JEUS 8부터는 WebtoB 연결을 생성하는 경우 기본값이 WJP Version 2로 변경되었다.

    • WebtoB 4.1.6 이하 버전은 WJP Version 2를 지원하지 않기 때문에 wjp-version을 반드시 1로 설정해야 한다.

  • WebSocket 기본 지원

    • 특별한 설정 없이 WebSocket을 사용할 수 있도록 변경되었다(기존에는 jeus-web-dd.xml에 설정). 따라서, jeus-web-dd.xml을 생성해 주는 webddgen 명령의 websocket 옵션도 삭제되었다.

  • webinf-first 스키마 변경

    • JEUS 7까지는 하위 호환을 위하여 mixed 속성을 사용하여 webinf-first를 변경하였으나, JEUS 8부터는 element를 추가하는 방식으로 변경되었다.

  • distributed websocket session을 distributed user properties로 변경

    • distributed websocket session 기능은 jsessionid가 같은 서로 다른 websocket session이 같은 userproperties 맵을 공유할 수 있도록 하는 기능이다. 따라서 해당 기능에 맞게 명칭을 변경하고 설정의 형태도 attribute에서 child element를 가지는 형태로 변경한다

  • HTTP Parameter의 empty string 처리 개선

    • HttpServletRequest.getParameter()에서 value가 empty string일 경우 empty string을 리턴하도록 통일하였다.

    • 기존에는 Query String과 x-www-form-urlencoded에서는 empty string을 리턴하고 multipart/form-data에서는 'new String()'하여 리턴하였으나, 3가지 유형 모두 empty string을 리턴하도록 변경하였다.

2.2.3. Session Server

  • 기존 시스템 프로퍼터로 설정하였던 기능이 WebAdmin 및 jeusadmin 명령어 옵션으로 변경

    • 다음의 프로퍼티가 옵션으로 변경되었으며, 기존의 시스템 프로퍼티 설정은 사용할 수 없다.

      jeus.sessionserver.backupqueue.max    ⇒ Backup Queue Size
      jeus.sessionserver.backupunit         ⇒ Backup Unit Size
      jeus.session.exclude.das.in.cluster   ⇒ Exclude Das In Cluster
      jeus.sessionserver.ignore.flowcontrol ⇒ Ignore Flow Control
      jeus.sessionmanager.failback.allow    ⇒ Allow Fail Back
      jeus.sessionmanager.prevent.migration ⇒ Prevent Migration 
  • Session Cluster Config를 수정 및 통합

    • WebAdmin에서 세션 클러스터 설정하는 방법이 변경되었다.

    • 환경설정 파일에서 세션 클러스터 설정 부분이 통합되었다.

  • 세션 클러스터 관련 용어 변경

    • 다음의 용어들이 변경되었다.

      애플리케이션 스코프 세션 클러스터 ⇒ Defualt 세션 클러스터 
      도메인 스코프 세션 클러스터      ⇒ 도메인 와이드 세션 클러스터
      사용자 정의 스코프 세션 클러스터  ⇒ 특별 정의 스코프(SPECIFIC SCOPE) 세션 클러스터
      
  • 일부 콘솔 명령어 옵션 추가 및 사용법 변경

    • show-session-configuration 옵션이 추가되었고 사용법이 변경되었다.

    • modify-session-configuration 옵션이 추가되었고 사용법이 변경되었다.

  • DistributedSessionManager의 세션 객체 관리 구조 개선을 통한 Passivation 성능 개선

    • Passivation Global Lock을 제거하여 worker 간 경쟁을 제거하였다.

    • 기존 파일을 세션별로 관리하도록 변경하였고 Passivation 관련 스키마를 변경하였다.

  • Session 처리의 안정성 향상

    • ServletRequestListener로 생성된 Access Session이 2회 호출될 경우의 세션 관리 부분이 개선되었다.

    • 동일한 Attribute를 SetAttribute할 경우의 Bound 및 UnBound 관련 처리가 개선되었다.

  • 기타

    • 불필요한 세션 클래스 구조를 제거하여 세션 기능을 최적화하도록 개선되었다.

    • 도메인 와이드 세션 클러스터 모드에서 Failback을 사용하는 경우 monitorning 및 migration 작업 안정성이 향상되었다.

    • 다수의 서버에서 Multi thread로 동일 서버로 Failback을 수행할 경우의 동작의 안정성이 개선되었다.

2.2.4. EJB

  • EJB 클러스터링 개선 및 변경사항

    • DLR(Dynamic Link Ref) 제거 및 LiveRef 구현을 통해 EJB 클러스터링 성능을 개선하였다.

      • JEUS 7의 EJB 클러스터링은 JNDI와 DLR(Dynamic Link Ref)를 이용하여 지원되고 있는데, 이 방법은 구조적으로 Clustered EJB를 처음 사용할 때부터 다수의 JNDI Operation이 필요하고, failover될 때 이를 감지하여 stub을 교체하는 방식으로 동작하므로 불필요한 오버헤드가 많아서 성능상의 문제가 있다. 이 문제를 해결하기 위하여 DLR 제거 및 LiveRef 구현을 통해 EJB 클러스터링 성능을 개선하였다.

      • EJB Clustering 개선은 EJB3.x Stateless Session Bean에 대해서만 적용되는 것으로, 하위 버전에 대한 호환을 위해서는 jeus-ejb-dd.xml의 use-dlr을 true으로 설정하거나 @Clustered(useDlr=true)를 사용한다.

    • EJB 3.x의 Stateless Session Bean에서는 method invoke 레벨에서의 로드 밸런싱이 가능하도록 개선하였다.

      • jeus.ejb.cluster.selection-policy 옵션을 통해 설정할 수 있다.

    • 클러스터링 상황에서 JNDI Context를 선택하는 경우 JEUS 7에서는 랜덤으로 선택하였지만 Local Optimization하도록 개선하였다.

  • EJB Home을 클라이언트에 노출하지 않도록 변경

    • EJB 3.x의 경우에도 EJB home이 노출되어 있었지만 해당 부분을 노출하지 않도록 변경한다.

2.2.5. Security

  • Security Domain 관련 변경사항

    • Security Domain을 추가한 후 Activate하지 않았을 경우 user 생성 메뉴가 나오지 않도록 변경되었다.

    • Security Domain을 추가할 때 도메인이 추가되었는지 확인하는 방법을 변경하여 오동작 발생 가능성을 배제하였다.

  • SSL 사용할 때 프로토콜을 지정할 수 있도록 기능 개선

    • 최근 SSLv3 프로토콜에서 보안 이슈가 발생하여 특정 프로토콜을 사용하지 않도록 하는 보안권고 사항이 나오고 있다.

      다음의 형식으로 SSL 프로토콜 버전을 설정할 수 있도록 하는 기능이 스키마의 <ssl><ssl-protocol>에서 설정할 수 있도록 변경되었다.

      -Djeus.net.ssl.protocolVersions=TLSv1,SSLv3 

2.2.6. JMS

  • DELETE_TABLES_ON_START를 Journal File에도 적용되도록 변경

    • 기존에 디렉터리를 삭제해야 만 초기화할 수 있던 Journal File도 JEUS가 기동될 때 초기화할 수 있는 기능을 추가하였다.

  • Message Bridge 설정할 때 다수의 jar 파일을 로드하도록 수정

    • 기존에는 Message Bridge를 설정할 때 Class Loader에서 Load할 jar를 한 개 밖에 설정하지 못하도록 되어있다. 이를 콤마(,)로 구분하여 Load할 jar 파일을 다수 설정할 수 있도록 변경하였다.

  • 하위 버전 Store 연결할 때 메시지 변경

    • JEUS 7과 JEUS 8 간의 메시지 호환성은 보장되지 않기 때문에, 다른 버전의 Store에 연결 즉시 메시지를 출력하고 JMS 엔진이 기동되지 않도록 한다.

    • Journal의 경우도 동일하게 동작하도록 변경되었다.

2.2.7. WebService

  • Web Service Library 저장 위치 변경

    • webservices-rt.jar, webservices-tools.jar 파일의 위치가 기존의 lib/system에서 lib/shared로 변경되었다.

  • 기본 JAX-RS 구현체 동작 정지(disable) 지원

    • 라이브러리 충돌 등의 이유로 기본 JAX-RS 구현체를 사용하지 않을 경우 쉽게 정지시킬 수 있는 방법을 지원한다.

    • JEUS에 포함된 jar 파일 변경 없이 ${JEUS_HOME}/lib/shared/libraries.xml의 해당 구현체 설정을 삭제하는 것으로 기본 JAX-RS 구현체 사용을 정지시킬 수 있다.

2.2.8. JNDI

  • DirService 안의 isGracefulRedeploymentSupported 시에 ClassLoader가 변경되지 않도록 개선

    • Graceful Redeploy 체크 중 ClassLoader가 변경되지 않도록 개선하였다.

  • InitialContext 생성 시 hostname 처리방법 개선

    • 간혹 ""와 같이 빈 문자열이 넘어오는 경우, ":9736"에 접속하는 문제가 발생하지 않도록 localhost로 치환을 하여 처리하도록 개선하였다.

2.2.9. Network

  • 리스너의 SSL 관련 설정 정리

    • 리스너의 SSL 설정 중 비정상적인 부분을 수정하였다.

    • Keystore 및 Truststore의 password 기본값이 삭제되었다.

    • Keystore 및 Truststore의 파일 경로명 기본값이 삭제되었다.

    • Keystore 및 Truststore 파일의 경로명에 상대 경로를 사용할 수 있게 한다(시작 경로는 각 domain의 config 폴더).

    • 서버에서 클라이언트의 SSL을 처리하기 위한 SSLContext는 SSL 설정 태그를 통해서만 설정 가능하게 한다. System Property는 클라이언트를 위한 값이다.

  • NIO 성능 향상

    • Read 및 Buffer의 관리를 모두 Selector가 처리하도록 변경하여 불필요한 Read 횟수를 줄이면서 로직을 단순화하여 성능을 개선하였다.

    • SSLSocketChannel 클래스의 inNetBuffer를 JeusSocketChannel의 read buffer와 통합하여 SSL 처리를 최적화하였다.

2.2.10. JMX

  • jmx-manager 관련 스키마 정리

    • 불필요하게 복잡하고 depth가 깊은 jmx-manager 스키마를 단순하게 정리하고, 필요한 스키마를 추가한다.

    • 삭제된 설정

      • jmxmp-connector

      • rmi-connector

      • jmx-connector

      • html-adaptor

    • 추가된 설정

      • use-rmi-connector

      • use-html-adaptor

      • html-adaptor-port

  • SNMP 클라이언트를 통해 JEUS가 모니터링되지 않던 문제 개선

    • SNMP 클라이언트를 개발하여 JEUS 모니터링을 할 경우 SNMPAgent와 MBeanServer의 연동이 원활하지 않아 모니터링이 되지 않던 문제를 개선하였다.

2.2.11. Logging

  • JEUS Log 파일명 표시방법 개선

    • log rotation, valid-hour, append:false인 경우 rotation name에서 로그 생성 시간대를 확인하기 쉽도록 파일명에 시간(24시간 기준)을 표시하도록 개선하였다.

    • 로그 파일명은 JeusServer_yyyyMMdd_HH.log[0000] 형태로 변경되었다.

2.2.12. NodeManager

  • NodeManager에서 ssh node에 연결이 잘 되었는지를 판단하는 방법 개선

    • ssh node에 원격으로 명령을 내리기 전에 ssh node가 정상 동작을 하는지 알아보기 위해서 실행하는 Java 명령과 정상동작 여부를 확인하는 방법을 개선하였다.

    • 동작 여부를 확인하는 명령은 "java -version"으로 변경하고, 결과의 시작 문자열이 "java version"일 경우 정상적으로 실행된 것으로 판단하도록 하였다.

2.2.13. Transaction

  • 스키마 변경

    • Uncompleted가 Incomplete로 변경됨에 따라 스키마의 <tm-config><uncompleted-timeout>이 <tm-config><incomplete-timeout>으로 변경되었다.

    • 이와 관련하여 jeusadmin의 modify-transaction-manager 명령의 -ut 옵션도 -it로 변경되었다.

2.2.14. JSF

  • JSF 2.2 RI 업그레이드

    • JSF 버전을 2.1.3에서 최신 버전인 2.2.13으로 업그레이드하였다.