제3장 JEUS 6.0 Fix#8

내용 목차

3.1. 버그패치
3.1.1. Server
3.1.2. EJB
3.1.3. WebContainer
3.1.4. JNDI
3.1.5. JDBC
3.1.6. Transaction
3.1.7. Session Server
3.1.8. Deployment
3.1.9. Tool
3.1.10. WebAdmin
3.1.11. WebService
3.1.12. Installer
3.2. 기능추가
3.2.1. Server
3.2.2. WebContainer
3.2.3. JMS
3.2.4. JDBC
3.2.5. WebAdmin
3.2.6. Installer
3.3. 변경사항
3.3.1. EJB
3.3.2. WebContainer
3.3.3. JDBC
3.3.4. Session Server
3.3.5. Tool
3.3.6. Installer

본 장에서는 JEUS 6.0 Fix#8에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

3.1. 버그패치

3.1.1. Server

  • Manager에서 엔진 컨테이너를 기동하기 위한 command를 생성할 때 JEUS 스크립트에 설정한 시스템 프로퍼티가 제대로 전달되지 않을 수 있는 문제 수정

    Manager에서 엔진 컨테이너의 command를 생성할 때 JEUS 스크립트에 설정한 시스템 프로퍼티가 제대로 전달되지 않을 수 있다.

    예를 들면, JEUS 스크립트에 -Djeus.aaa.bbb=ccc와 -Djeus.aaa.bbb-ccc=ddd를 주었을 때 -Djeus.aaa.bbb=ccc는 무시되고 -Djeus.aaa.bbb-ccc=ddd만 전달되는 경우가 있다. 이는 startsWith 연산을 하여 발생한 문제였으며, equals 연산을 하도록 하여 프로퍼티가 둘 다 적용이 되도록 수정하였다.

  • 로그 메시지가 거의 없는 경우 Log Rotation이 오동작하는 경우에 대한 문제 수정

    로그가 거의 없을 때 로그 파일이 삭제되었는지 여부를 확인하는 시간과 로그를 기록하는 시간이 겹쳐져서 삭제 여부만 확인하고 넘어가기 때문에 버퍼에 있는 로그 메시지들이 이전 파일에 찍히는 문제가 있었는데 이를 수정하였다.

  • IBM JDK1.6을 사용할 때 Throwable.printStackTrace()가 불리면 trace가 한 줄로 출력되는 문제 수정

    IBM JDK1.6을 사용할 때 Throwable.printStackTrace()가 불리면 trace가 한 줄로 출력되어서 stack trace를 보기 힘든 문제가 있었으나 이를 수정하여 한 줄로 출력되지 않도록 하였다.

3.1.2. EJB

  • Stateful Session Bean에서의 concurrent access 문제 수정

    Stateful Session Bean을 여러 사용자가 lookup → create → business method → remove를 반복하면 다음과 같은 Exception이 발생한다.

    java.rmi.NoSuchObjectException: no such object in table
    java.rmi.RemoteException: concurrent access of same stateful session bean method is not allowed
    java.rmi.NoSuchObjectException: unexported object
    javax.ejb.NoSuchEJBException: No such EJB, it may be removed due to timeout
    

    하나의 Session ID를 사용하지 않고 EJBObjectHandler의 Session ID를 사용하다가 context의 Session ID를 사용해서 발생하는 문제이다.

    이를 해결하기 위해 Stateful Session Bean의 <connect-pool>의 <max>의 기본값을 0으로 변경하고, 서버 로그에는 다음과 같은 경고 메시지를 출력한다.

    [2011.10.19 11:42:03][1][b283] [container1-129] [EJB-8154] WARNING: jeus-ejb-dd.xml
    of EJB module[xmldd2] contains DEPRECATED <connect-pool> element for EJB[counter].
    <connect-pool> setting is ignored.
  • ejb-jar.xml에서 <env-entry>의 <env-entry-type>이 없을 경우 <injection-target>의 field나 메소드를 보고 반영되지 않는 문제를 수정

    <env-entry>의 <env-entry-type> 이 없는 경우 디플로이가 되지 않았지만, 이를 수정하여 <injection-target>의 field나 메소드를 보고 반영되도록 하였다.

  • EJB Timer Service를 사용할 때 <durable-setting>에 XADataSource를 사용하면 엔진 부팅이 안되는 문제를 수정

    EJB Timer Service를 사용하기 위해 EJBMain.xml 설정에서 <durable-setting>의 <data-source-name>에 XADataSource를 사용하여 JeusTimerBean을 디플로이하면 엔진 부팅이 되지 않는 현상을 수정하였다.

  • EAR, EJB ClassLoader(ArchiveArrayClassLoader)의 리소스를 slash('/')로 시작하는 이름으로 getResource()를 통해 접근할 경우, 잘못된 리소스가 반환되는 문제 수정

    ArchiveArrayClassLoader의 리소스를 slash('/')를 통해 gerResource()를 할 경우 기본 URL이 무시되고 slash('/')로 시작되는 이름만 반환되는 문제를 수정하였다.

  • precompile한 EJB를 source만 수정한 후 다시 appcompiler를 수행하지 않고 fast-deploy=false, keep-generated=false로 디플로이한 경우 새로운 source가 반영되지 않는 문제 수정

    fast-deploy=false인 경우 impl, skel(stub)을 새로 generate한다. impl 컴파일이 끝나고 skel(stub)을 컴파일할 때 impl class를 참조하게 되는데 애플리케이션 내에 프리컴파일(precompile)되어 있는 이전 impl을 참조하게 되어 컴파일 에러가 발생하는 문제를 수정하였다.

  • Entity Bean의 <subengine-type>의 설정이 default인 ReadLocking으로 수행되는 문제 수정

    jeus-ejb-dd.xml에 <cm-persistence-optimize>의 <subengine-type>를 설정하여도 적용되지 않고 default인 ReadLocking으로 수행되지 않도록 수정하였다.

  • 서로 다른 트랜잭션에서 하나의 EntityBean을 동시에 접근하는 경우에 reentrant invocation is not allowed...가 발생되는 문제 수정

    한 트랜잭션에서 하나의 entity bean이 동시에 호출되는 경우만 reentrant인데 서로 다른 트랜잭션이 하나의 entity bean을 호출하는 경우에 발생하지 않도록 수정하였다.

  • EJB 3.x에서 DLR의 link를 선택하는 policy를 round-robin으로 설정했을 때 제대로 동작하지 않는 문제 수정

    ThreadLocal에 index를 두어 같은 스레드로 요청할 경우 index를 증가시키는 방법이 아닌, DLR 객체에 round-robin을 위한 index를 두어서 해당 클라이언트에서 같은 DLR을 다시 lookup할 때 index를 증가시켜서 사용하도록 하였다. EJB 3.x에서 일부 DLR link에서만 round-robin이 동작하는 것을 수정하였다.

    단, 캐시(cache)를 사용할 때만 round-robin 방식이 적용된다.

3.1.3. WebContainer

  • Context-group 밖에 Access log를 생성되지 않도록 설정해도 Access log가 생성되는 현상 수정

    WEBMain.xml의 Context-group 밖에 <accesslogging><enable>을 false로 설정하여도 적용되지 않던 문제를 수정하였다.

  • Static file(css, png등)에 대한 요청을 수행할 경우 FileDescriptor(FD)가 계속 증가하는 오류 수정

    Static file(css, png등)에 대한 요청을 수행할 경우 FileInputStream을 close하도록 수정하여 FileDescriptor가 계속 증가하지 않도록 수정하였다.

  • 컴파일된 JSP Servlet Class가 있는 폴더를 심볼릭 링크로 공유하여 사용할 때 변경된 내용이 먼저 호출된 컨테이너에만 반영되는 문제 수정

    컴파일된 JSP Servlet Class가 서로 다른 컨테이너에서 공유될 때 컴파일을 시도한 컨테이너 외에 참조하는 다른 컨테이너에서도 클래스의 변경을 감지하여 반영되도록 수정하였다.

  • WebtoB와 pipe로 연결되어 있어도 jsvport 번호(9900)가 보이는 오류 수정

    JEUS와 WebtoB를 연결할 때 pipe로 연결 되었음에도 9900 포트로 연결되었다는 로그 대신, 포트 번호를 출력하지 않아 pipe로 연결되었음을 보여주도록 다음과 같이 수정하였다.

    [2011.10.24 20:32:23][2][b283] [container1-39] [WEB-3384] WebtoB connection[unix(hth-0:9900:152)] established
  • Shared library를 사용하는 애플리케이션 디플로이의 경우, libraries.xml에 명시한 .jar파일이 없을 때 파일명으로 폴더가 생성되는 현상 수정

    Shared library를 사용하는 애플리케이션 디플로이의 경우 libraries.xml에 명시한 .jar파일이 없을 때 파일명으로 폴더가 생성되는 현상을 수정하였다. 또한, 해당 jar파일이 없다는 로그 메시지를 출력하도록 수정하였다.

  • request header에 content-type 값이 null로 설정되어 있으면 파일이 다운로드되는 문제를 수정

    request header에 content-type이 null로 설정되어 있으면 content-type에 잘못된 값이 설정되어 파일이 다운로드 되는 문제를 수정하였다.

  • jeus-web-dd.xml에 webinf-first의 속성값이 true이면 false일 때에 비해 성능이 떨어지는 문제를 수정

    jeus-web-dd.xml에 webinf-first의 속성값이 true이면 리소스에 대한 url이 캐싱되지 않아 성능이 false일 때에 비해 성능이 저하되는 문제를 수정하였다.

  • Servlet에서 forward로 한글 파라미터를 전송할 경우 한글이 깨지는 문제를 수정

    Servlet에서 forward로 한글 파라미터를 전송하는 경우 한글이 깨지는 문제를 수정하였다.

  • SpringFramework과 JEUS의 WorkerServlet을 동시에 설정하면 default-servlet-handler가 동작하지 않는 문제를 수정

    SpringFramework 3.X 버전에서 JEUS의 WorkerServlet을 동시에 설정하면 default-servlet-handler가 동작하지 않은 문제를 수정하였다.

  • web.xml에 설정된 사용자 정의 필터에서 doFilter()를 실행하면 out.write()가 실행되지 않는 문제를 수정

    web.xml에 설정된 사용자 정의 필터에서 doFilter()를 실행하면 out.write()가 실행되지 않는 문제를 수정하였다.

  • Windows에서 ear파일이 수정되지 않는 문제를 수정

    Windows에서 디플로이된 ear 모듈이 제거 및 수정되지 않아 Redeploy할 수 없는 문제를 수정하였다.

  • web.xml에 정의된 DOCTYPE을 http connection으로 동작하려는 문제를 수정

    web.xml에 정의된 DOCTYPE을 http connection으로 동작하여 인터넷이 되지 않는 환경에서 동작하지 않는 문제를 JEUS 내부의 dtd로 인식할 수 있도록 문제를 수정하였다.

  • jspServlet을 사용할 경우 init param이 설정되지 않는 문제를 수정

    jspServlet을 사용할 경우 설정 된 init param이 설정되지 않는 문제를 수정하였다.

  • WEBMain.xml에 인코딩 설정이 되어 있지 않은 경우, Resource Servlet에서 한글이 깨지는 문제를 수정

    WEBMain.xml에 인코딩 설정이 되어 있지 않은 경우, Resource Servlet에서 한글이 깨지는 문제를 수정하였다

3.1.4. JNDI

  • 클라이언트의 security principal이 anonymous인 경우 모든 operation이 되는 문제 수정

    clientAuthorize()인 경우 anonymous는 OP_AUTHENTICATE 메시지를 보내지 않아 모든 operation이 수행 가능한 문제가 발생하여 anonymous인 경우에도 서버로 OP_AUTHENTICATE 메시지를 보내도록 수정하였다.

  • DLR의 link를 선택하는 policy를 round-robin으로 설정할 때 IndexOutOfBoundsException이 발생하는 문제 수정

    round-robin을 수행할 때 available link list의 마지막 link에서 fail이 발생하면 IndexOutOfBoundsException이 발생하는 문제를 수정하였다.

  • JNDI InitialContext 설정에서 security를 사용할 경우 fail-over가 안되는 현상

    stand-alone 방식의 클라이언트에서 security를 사용하고 클러스터링을 할 경우 fail-over가 안되는 문제를 수정하였다.

3.1.5. JDBC

  • Cluster DataSource를 사용할 때 fail-back 후 primary의 Connection 개수가 min에 미치지 못하는 상태에서 시작하는 문제 수정

    Cluster DataSource를 사용 할 때 fail-back 후 primary의 Connection 개수에 대한 조정 작업이 없어서 min보다 적은 상태에서 시작하는 문제가 있었다. 이를 fail-back 중에 Connection Pool의 current 수를 최소 min으로 보장 받을 수 있도록 수정하였다.

  • jeus.jdbc.check-connection-closed 옵션 추가

    기본적으로 Connection.close()를 호출한 뒤에 다른 API(prepareStatement(), getAutoCommit(), setAutoCommit() 등)를 호출하는 것은 잘못된 동작이며 javadoc에도 명시적으로 추가되어 있기 때문에 JEUS 6.0에서는 항상 Exception을 발생시켰다. 하지만 JEUS 4.x 버전과 JEUS 5.x 마이너 버전(fix#18 이하) 에서는 connection의 close 상태를 체크하지 않고 사용자의 API 호출을 그대로 JDBC 드라이버에 전달하기 때문에 하위 호환성을 위하여 옵션을 추가하였다.

    이 하위 호환성을 위한 옵션은 jeus.jdbc.check-connection-closed이며 default 값은 true 이다.

  • Cluster DataSource를 lookup할 때 잘못된 객체가 리턴되어 Exception이 발생하는 문제 수정

    Cluster DataSource를 lookup할 때 잘못된 객체가 리턴되어 애플리케이션에서 ClassCastException이 발생하는 문제가 있어 이를 수정하였다.

  • 툴을 이용하여 Connection Pool을 생성할 때 설정한 DataSource Target이 올바르게 적용되지 않는 문제 수정

    jeusadmin의 createds 명령이나 WebAdmin에서 [생성] 버튼을 이용하여 connection pool을 생성할 때, datasource에 지정된 datasource target과 상관 없이 모든 컨테이너에 pool이 생성되는 문제가 있었으나, datasource target이 설정되어 있을 때에 이를 가려서 지정된 target의 컨테이너에만 pool이 생성될 수 있도록 수정하였다.

  • <keep-connection-handle-open>이나 <stmt-caching-size>를 설정했을 때 Connection.close()를 호출할 경우 auto-commit 값이 복구되지 않는 문제 수정

    <keep-connection-handle-open>이나 <stmt-caching-size>를 설정했을 때 Connection.close()를 호출해도 auto-commit 값이 계속 유지되는 문제가 있었다. 이를 auto-commit 값이 default 값으로 복구되도록 수정하였다.

3.1.6. Transaction

  • <tm-config>/<pooling>/<max>를 4미만으로 설정하면 JEUS의 기동이 실패하는 문제 수정

    pooing step의 default가 4인데 <max>가 그것보다 작은 경우 JeusException을 발생시켜 JEUS의 기동이 실패하는 문제가 발생하여 step 관련 validation checking logic을 삭제하였다.

3.1.7. Session Server

  • 애플리케이션을 Redeploy할 때 ConcurrentModificationException이 발생하는 문제를 수정

    애플리케이션을 Redeploy할 때 세션 서버에서 기존의 세션을 복원하면서 ConcurrentModificationException이 발생하는 문제를 수정하였다.

  • 분산식 세션 서버에서 <default-file-db><path> 설정이 있는 경우에도 기본 경로에 파일이 생기는 문제를 수정

    분산식 세션 서버에서 $JEUS_HOME/logs/sessiondb/distributed에 기본적으로 파일 테이터베이스가 생성되는데, <default-file-db><path>를 설정해도 기본 경로에 파일이 생기는 현상을 수정하였다.

  • Primary Session Server에서 Backup Session Server로 Dumpbackup할 때 존재하지 않는 세션도 업데이트하는 문제를 수정

    세션 서버의 <recovery-mode>가 active, none일 경우 Primary Session Server에서 Backup Session Server로 Dumpbackup할 때 존재하지 않는 세션을 업데이트하는 문제를 수정하였다.

3.1.8. Deployment

  • Jant 명령을 이용하여 디플로이할 때 exploded 형태의 애플리케이션이 디플로이되지 않는 현상을 수정

    Jant 명령을 이용하여 디플로이할 때 exploded 형태의 애플리케이션이 디플로이되지 않는 문제를 애플리케이션이 packaging된 상태로 디플로이되도록 수정하였다.

3.1.9. Tool

  • upgrade4to6에서 EJB 모듈이 정상적으로 변환되지 않는 문제 수정

    JEUS 4에 사용되던 EJB 모듈이 내부에 '_moduleName' 이 붙은 DD 파일(ejb-jar_moduleName.xml, jeus-ejb-dd_moduleName.xml)이 존재하는 경우, 정상적으로 변환되지 않는 문제를 수정하였다.

  • upgrade4to6에서 app, regapp-all 옵션을 사용할 때 애플리케이션이 정상적으로 이전되지 않는 문제 수정

    upgrade4to6에서 app, regapp-all 옵션을 사용할 때 애플리케이션이 정상적으로 이전되지 않는 문제를 수정하였다.

  • jeusadmin의 ti 명령어에서 -il, -con 옵션이 동작하지 않는 문제 수정

    jeusadmin의 ti 명령어에서 -il, -con 옵션이 동작하지 않는 문제를 수정하였다.

  • 노드 클러스터링이 설정된 경우 jeusadmin에서 pidlist -a 명령을 실행하면 하나의 노드 정보만 출력되는 문제 수정

    노드 클러스터링이 설경된 경우 jeusadmin에서 pidlist -a를 명령을 실행했을 때 하나의 노드 정보를 클러스터링된 수만큼 보여주는 문제를 수정하였다.

3.1.10. WebAdmin

  • EJB Statistic 페이지에서 ClassCastException 발생하는 문제 수정

    다른 타입의 EJB(Stateless, Stateful, Entity, MDB) 모듈을 디플로이한 경우 최초 요청한 타입으로 고정되어 ClassCastException이 발생하는 문제를 수정하였다.

  • JDBC 데이터 소스의 바인드 동작이 정상적으로 수행되지 않는 현상 수정

    데이터 소스가 이미 바인드된 경우 바인드 버튼이 disable되지 않는 문제와 바인드되지 않은 데이터 소스를 바인드 할 경우 바인드 동작은 수행되지만 바인드 실패 메시지가 출력되는 문제를 수정하였다.

  • JMS 클라이언트 리소스 페이지의 호스트와 포트 정보가 표시 되지 않는 문제 수정

    JMS 클라이언트 리소스 페이지의 호스트와 포트로 표시되는 부분을 원격 주소로 표시하도록 수정하였다.

3.1.11. WebService

  • 여러 개의 WebService가 서로 다른 WSDL 파일을 사용하는 경우 발생하는 오류 수정

    webservices.xml에 명시된 둘 이상의 WebService가 서로 다른 WSDL 파일을 사용할 때 targetNamespace가 동일한 경우 발생하는 오류를 수정하였다.

  • Jant 명령을 이용하여 java2wsdl 및 wsdl2java 툴을 실행할 때 발생하는 오류 수정

    Jant 명령을 이용하여 java2wsdl 및 wsdl2java 툴을 실행할 때 정상적으로 동작하지 않던 버그를 수정하였다.

  • Java2wsdl 툴을 사용하여 -d 옵션으로 경로를 지정할 때 발생하는 오류 수정

    Java2wsdl 툴을 사용하여 -d 옵션으로 경로를 지정할 때 디렉터리 끝에 file separator가 있는 경우(D:\, D:\src\)에는 정상적으로 동작하지 않던 버그를 수정하였다.

3.1.12. Installer

  • WebService 예제 중 JAX-RPC WebService 호출 부분 오류 수정

    WebService 예제 중 JAX-RPC 방식의 WebService 호출 중 RPC Style과 Encoded Style을 사용하는 예제에서 OPERATION_STYLE과 ENCODINGSTYLE을 설정하도록 예제 소스 코드에 다음과 같이 추가하였다.

    call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
    call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas.xmlsoap.org/soap/encoding/");

3.2. 기능추가

3.2.1. Server

3.2.2. WebContainer

  • Trial 라이선스를 사용할 때 6번째 사용자부터 403오류가 발생하는데 이때 라이선스 문제라고 보여지는 로그 추가

    사용자수가 최대 5명인 trial 라이선스를 사용할 때 6번째 사용자부터 403오류가 발생한다. 이때 라이선스 문제라고 보여지는 다음과 같은 로그가 추가되었다.

    This request is denied. Because this license restricts the number of allowed clients.
     LICENSE EDITION: ENTERPRISE (Trial License), Max number of clients: 5
  • response header에 connection 타입을 설정할 수 있는 옵션 추가

    기존에는 WebtoB의 KeepAlive 설정에 따라 response header의 connection 타입이 설정되었는데 이를 WebtoB와 상관 없이 설정할 수 있도록 기능이 추가되었다.

    WEBMain.xml 
    <webtob-listener>
        <connection-type></connection-type>
    </webtob-listener>  
  • 사용자 정의 accesslog 필터 기능 추가

    JEUS에서 제공하고 있는 AccessLoggerFilter interface를 통해 클라이언트 Address, 요청 메소드, 요청 uri, 상태, 처리시간별로 선택하여 원하는 accesslog에 로그를 남기도록 하는 기능을 추가하였다. 자세한 내용은 JEUS Web Container 안내서”의 절 2.4.2. “Access log 필터 설정”을 참고한다.

3.2.3. JMS

  • WebAdmin에서 JMS 메시지 관리 기능 추가

    Queue나 Durable Subscriber에 쌓여 있는 메시지에 대해 다음과 같은 관리 기능을 제공한다.

    • 쌓여 있는 메시지의 목록 보기 기능

    • 개별 메시지에 대한 Header 정보, 프로퍼티 정보, Text Body 보기 기능

    • 개별 메시지에 대한 삭제 기능

  • Message Sorting 기능 추가

    JMS Message Sorting 기능이 추가되었다.

    다음은 Message Sorting 기능에 대한 설정 예이다.

    <jms-server>
        ...
        <message-sort> 
            <name>example</name> 
            <key>TEST</key> 
            <direction>ascending</direction> 
            <type>Integer</type> 
        </message-sort> 
        ...
        <destination> 
            <type>queue</type> 
            <name>ExamplesQueue</name> 
            <message-sort>example</message-sort> 
        </destination>
        ...
    </jms-server>
  • Message Bridge 기능 추가

    JEUS JMS 간의 혹은 타 MQ와의 Message Bridge 기능이 추가되었다.

    다음은 Message Bridge 기능에 대한 설정 예이다(JEUS 6.0의 ExamplesQueue에서 WebLogic 10.3의 ExamplesQueue로의 Bridge).

        <resources> 
            <message-bridge> 
                <bridge-connections> 
                    <connection> 
                        <name>jeus6</name> 
                        <classpath>
    file:///home/tmaxsoft/workspace/jeus6/lib/client/clientcontainer.jar
                        </classpath> 
                        <jndi-provider-url>127.0.0.1:19736</jndi-provider-url> 
                        <jndi-initial-context-factory>
                               jeus.jndi.JNSContextFactory
                        </jndi-initial-context-factory> 
                        <connection-factory>
                               XAQueueConnectionFactory
                        </connection-factory> 
                        <xa-support>false</xa-support> 
                    </connection> 
                    <connection> 
                        <name>weblogic103</name> 
                        <classpath>
    file:///home/tmaxsoft/bea/wlserver_10.3/server/lib/wljmsclient.jar
                        </classpath> 
                        <jndi-provider-url>t3://localhost:7001</jndi-provider-url> 
                        <jndi-initial-context-factory>
                               weblogic.jndi.WLInitialContextFactory
                        </jndi-initial-context-factory> 
                        <connection-factory>
                               QueueConnectionFactory
                        </connection-factory> 
                        <xa-support>false</xa-support> 
                    </connection> 
                </bridge-connections> 
                <bridges> 
                    <bridge> 
                        <name>bridge1</name> 
                        <source> 
                            <connection-name>jeus6</connection-name> 
                            <destination>ExamplesQueue</destination> 
                            <type>queue</type> 
                        </source> 
                        <target> 
                            <connection-name>weblogic103</connection-name> 
                            <destination>ExamplesQueue</destination> 
                            <type>queue</type> 
                        </target> 
                    </bridge> 
                </bridges> 
            </message-bridge> 
        </resources> 
  • JeusConnectionFactoryCreator가 JMS Failover를 지원

    JMS 클라이언트가 JNDI 서비스를 이용하기 어려운 환경일 경우에 사용할 수 있는 JeusConnectionFactoryCreator가 JEUS 6 Fix#7에 추가된 기능인 JMS failover에 대해서도 지원하게 되었다.

3.2.4. JDBC

  • 데이터 소스 설정에서 사용자 및 패스워드를 별도로 관리하는 프로퍼티 파일(properties file)을 사용하는 기능 추가

    데이터 소스 사용자 및 패스워드를 별도로 관리하는 프로퍼티 파일(properties file)을 제공한다. 프로퍼티 설정은 JEUSMain.xml의 설정보다 우선한다.

    프로퍼티 파일의 패스는 -Djeus.jdbc.ds-accounts-properties-path로 설정 가능하며 $JEUS_HOME/config/ds-accounts.properties.template을 통해 properties template file을 제공한다.

    ds-accounts.properties.template 파일의 내용은 다음과 같다.

    # Another way to configure username and password for data sources.
    # Configurations here are prior to JEUSMain.xml.
    #
    # [EXAMPLE]
    #
    #    <database>
    #       ...
    #       <data-source-id>myds</data-source-id>
    #       ...
    #       <user>user1</user>
    #       <password>passwor1</user>
    #       ...
    #
    #    Username and password for data source myds above are overwritten by
    #
    #    myds.user=use2
    #    myds.password=password2

3.2.5. WebAdmin

  • JMS Message Sorting 스키마 적용

    JMS Message Sorting 기능을 구현하여 다음의 페이지에 스키마를 적용하였다.

    • 엔진 컨테이너 > 엔진 > JMS 엔진 > Message Sort

    • 엔진 컨테이너 > 엔진 > JMS 엔진 > Durable Subscriber > Messege Sort

    • 엔진 컨테이너 > 리소스 > 데스티네이션 > Message Sort

3.2.6. Installer

  • 플랫폼 추가 지원

    Installer에서 AIX 6.x 플랫폼을 추가 지원한다. 플랫폼 선택 화면에서 AIX 5.x PowerPC 부분이 AIX 5.x, 6.x PowerPC로 변경되었다.

  • JMS 예제 추가

    이전 버전에 없었던 JMS 예제가 추가되었다. 추가된 예제은 JMS Queue, Topic에 대한 기본적인 Send, Receive 예제이다. 추가된 위치는 다음과 같다.

    $JEUS_HOME\samples\jms

3.3. 변경사항

3.3.1. EJB

  • EJB 엔진 관련 jeusadmin 명령인 moduleinfo의 regular expression 옵션 변경

    이전 버전에서는 moduleinfo –r –rb [module_name] [bean_name]을 사용하여 각각 regular expression에 대한 옵션(module_name은 -r 옵션, bean_name은 -rb 옵션)이 존재하였다.

    JEUS 6.0 Fix#8에서는 beanlist와 동일하게 –r 옵션으로 module_name과 bean_name을 동시에 regular expression으로 동작하도록 변경하였다. 변경된 moduleinfo의 사용법은 다음과 같다.

    moduleinfo -con jeus6_container1 -r [module_name] [bean_name]

3.3.2. WebContainer

  • jsp를 컴파일할 때 global JSP Engine 단위로 lock을 설정하는 것을 jsp 단위로 변경

    하나의 JSP를 컴파일하는 동안 불필요하게 global JSP Engine lock을 잡고 있어서 컴파일과 관계 없는 JSP도 사용자의 요청을 처리하지 못하였으나 이를 컴파일 하려는 jsp만 lock을 잡아 컴파일과 관계없는 jsp는 요청을 처리할 수 있도록 변경하였다.

  • context-group 밖에 남는 Access log가 rotation 되어서 남도록 정책 변경

    access log를 설정하지 않으면 context-group 밖에 access-log가 하나의 파일로 남도록 되어 있던 것을 1일 단위로 rotation하도록 기본값을 변경하였다.

  • WEBMain.xml의 기본 연결값 변경

    WEBMain.xml에서 사용되는 <webtob-address>, <tmax-address>, <tmax-backup-address>의 기본값을 127.0.0.1에서 'localhost'로 변경하였다.

  • JEUS와 WebtoB가 연결되어 있지 않을 때 연결되지 않았다는 로그가 스레드 개수만큼 출력되는 현상 수정

    초기 thread pool을 생성할 때, 설정한 thread pool의 min값만큼의 스레드들이 한 번에 WebtoB로 연결을 시도하여 스레드 개수만큼 로그가 출력되었지만, 우선 스레드 하나만 연결을 시도하여 연결되지 않았다는 로그가 한 번만 출력되도록 수정하였다.

3.3.3. JDBC

  • data-source의 export-name을 사용하던 JDBC 관련 명령어를 data-source-id를 사용하도록 변경

    data-source-id가 도입되었지만 여전히 data-source의 export-name을 사용하는 JDBC 관련 명령어들이 있어서 사용자에게 혼란을 줄 수 있다. 따라서 기존의 data-source의 export-name을 사용하던 JDBC 관련 명령어들을 data-source-id를 사용하도록 변경하였다.

3.3.4. Session Server

  • Session Server의 Memory 변화량을 모니터링하는 로직 변경

    Session Server의 Memoroy 변화량을 모니터링할 때, 세션의 메모리 변화량을 1분, 5분, 15분에 한 번씩 체크하여 보여주도록 되어 있었으나 이를 1분, 5분, 15분의 누적 메모리 변화량으로 보여주도록 변경하였다.

3.3.5. Tool

  • jeusadmin에서 command가 대소문자를 구분하지 않고 실행되도록 변경

    jeusadmin에서 command가 대소문자를 구분하지 않고 실행되도록 변경하였다.

  • upgradetool과 appcompiler의 도움말을 옵션별로 보여주도록 변경

    upgradetool과 appcompiler의 도움말을 옵션별로 보여주도록 변경하였다.

    C:\>appcompiler -h
     appcompiler    make EJB interface impl, skel and stub classes, jsp servlets
                    and webservice endpoint for application
    
     Usage:
           appcompiler [-h argument] [-verbose] [-keep] [-jspmap] [-batch] [-q]
                       [-dir directory_name(path)] [-client clientview_filename]
                       [-donotadd] [-deloldgen] [-ejb-jar ejb-jar.xml_path]
                       [-jeus-ejb-dd jeus-ejb-dd.xml_path] [-D<property=value>]
                       [-properties filename] [app_name]
    
           arguments:
             -h argument: show help for each argument
             -verbose: set verbose mode (loglevel: FINEST)
             -keep: keep the generated impl, skel and stub sources to the
                    application file(directory)
             -jspmap: generate servlet-mapping table (jeus_jspmap.xml)
             -batch: compile applications in batch mode. Without this option,
                     compile applications in each mode
             -q: stop compilation on compile error
             -dir directory_name(path): set the target to all applications in
                                        specified directory
  • 노드 클러스터링 환경에서 nodelist -a를 실행하면 결과가 노드별로 출력되도록 변경

    노드 클러스터링 환경에서 nodelist -a를 실행하면 결과가 노드별로 출력되도록 변경하였다.

    nodelist -a
      [ was1 ] was1   was2   was3
      [ was2 ] was1   was2   was3
      [ was3 ] was1   was2   was3

3.3.6. Installer

  • 내장 WebtoB 버전 변경

    JEUS 내장 WebtoB 버전을 4.1.2.0에서 4.1.4.0으로 변경하였다(IPv6 지원).