본 장에서는 JEUS6 Fix#2에서의 버그 패치, 기능 변경, 추가사항에 대해서 설명한다.
원격으로 EJB 호출 중 Exception이 발생될 때 thread 반환 문제 수정
원격으로 EJB를 호출하여 사용하는 과정에서 Exception이 발생한 경우 thread가 제대로 반납되지 않을 가능성이 있어 skeleton의 코드를 변경하도록 수정하였다. 이전 버전에서 appcompiler를 이용하여 컴파일한 모듈은 다시 컴파일을 실행해야 한다.
Home business method에서 String을 return하는 경우 appcompile이 안되는 문제 수정
EJB 의 Home business method 중 String 값을 return하는 method가 있을 경우 appcompile이 되지 않던 문제를 수정하였다.
CMP에서 clustered datasource를 사용 가능하도록 수정
ClusteredDataSource를 CMP에서 사용이 가능하도록 변경하였다.
Timeout의 default 값이 제대로 적용되지 않던 문제 수정
pasivation timeout과 disconnect timeout 값을 사용자가 지정하지 않을 경우 default 값이 아닌 0으로 settting 되는 문제를 수정하였다.
Timeout의 값을 음수로 지정하는 경우에 대한 수정
pasivation timeout과 disconnect timeout 값을 -1로 지정할 경우, 0으로 설정되어 버리는 현상을 수정하였다. 그리고 사용자가 임의의 음수를 지정할 경우에는 -1로 인식하여 timeout 기능을 사용하지 않는 것으로 하였다.
Clustering 설정이 on/off인 상황의 stub이 호환되도록 수정
클라이언트에서 사용하는 stub이, 서버에 디플로이된 모듈과 Clustering 설정이 다른 stub인 경우에도 NullPointException이 발생하지 않고 EJB호출이 가능하게 하였다.
L4환경에서의 port 번호를 잘못 가지고 오는 버그 수정
WebtoB 앞에 loadbalancer가 있을 경우 loadbalancer의 포트가 아닌 WebtoB의 포트로 URL을 생성해서 연결이 안되는 문제가 있어서 response.sendRedirect에서 URL을 만들 때 필요한 port 번호를 Host 헤더에서 얻도록 수정하였다.
Host 헤더 필드에 포트설정이 없을 경우 http인 경우 80, https인 경우 443이 할당된다.
Custom tag 관련 버그 수정
Custom tag의 attribute 에 "\\" 가 있을 경우 컴파일 에러가 발생하던 버그가 수정되었다.
Request header의 "Expect: 100-continue"를 무시하는 문제 해결
Request의 header에 "Expect: 100-continue"가 있을 때, 서버가 service에 대해서 Ready 상태가 되었을 때 100-continue를 반환하여야 하지만 이를 처리 못하던 문제를 수정하였다.
getResource() 리턴값 관련 버그 수정
Windows환경에서 ServletContext.getResource()호출할 때 URL이 "\" 나오는 부분을 "/" 으로만 구성되게 수정되었다.
modern 클래스 로더를 사용할 때 ClassCastException 발생 버그수정
modern 클래스로더 적용 후 getResource 메소드는 jeus.servlet.classloader.spec23 옵션이 적용되지 않아서 WEB-INF/lib 아래의 클래스가 먼저 로딩되지 않는 버그가 수정되었다.
NIO TCP Listener를 사용할 때 잘못된 header정보를 출력하던 버그수정
NIO TCP Listener를 사용할 때 TCPDispatcherConfig의 getHeaderLength()가 출력되지 않는 버그가 수정되었다.
인코딩 관련 버그수정
<forced-request-url-encoding>만 설정하고 <forced-request-encoding>을 설정하지 않았을 경우 getRequestQueryEncoding() 값이 null이 되는 버그가 수정되었다.
NIO Http Listener 관련 버그 수정
ssl을 사용하지 않아도 ssl input buffer를 만드는 버그가 수정되었다.
page 호출 이후에도 ByteBuffer를 free가 안 되는 버그가 수정되었다.
사용되지 않는 NIOContentBuffer를 만드는 문제가 수정되었다.
부하 상황에서 getContentType()가 null이 되는 버그가 수정되었다.
webtob-jeus reconnect관련 버그 수정
webtob-jeus reconnect할 때 content length가 0 byte 인 200 OK response 가 전송되어 count가 올라가는 버그가 수정되었다.
JEUS를 종료할 때 NullPointerException 발생할 수 있는 버그 수정
JEUS를 종료할 때 getRemoteHost를 부르는데, socket이 끊어진 경우 NullPointerException이 발생하던 버그를 수정하였다.
TCP, TMAX Listener에서 잘못된 정보 출력 버그 수정
TCP, TMAX Listener에서 request 파싱 중, pathInfo 대신 servletPath가 나오는 버그를 수정하였다.
커스텀 태그 파일 재귀 호출할 때 JSP를 컴파일 하지 못하는 버그수정
커스텀태그 파일을 재귀적으로 호출하는 경우 NullPointerException이 발생하는 버그가 수정되었다.
AccessLog의 값이 잘못 나오는 버그 수정
JSESSIONID가 없는 최초의 요청에 대해서 %{JSESSIONID}c 부분에 request URI가 출력되는 버그가 수정되었다.
쿠키에 개행문자가 포함된 경우 잘리는 문제수정
쿠키의 개행문자가 포함된 경우 개행문자('\n')이후의 문장이 무시되는 버그가 수정되었다.
중앙식 세션 서버를 사용할 때 backup 서버와 연결이 안 되는 버그 수정
중앙식 세션 서버 설정 중 <session-server><removal-to>을 주지 않으면 백업 세션 서버에 연결되지 않는 버그가 수정되었다.
세션의 isNew 상태가 true로 나오는 버그수정
분산식 세션서버에서 primary가 down되고 다음 요청이 backup에 갔을 때 세션 객체의 isNew 값이 true로 나오는 버그가 수정되었다.
HTTP Response Header, Content-Type에 charset이 중복 설정되던 문제 해결
HTTP Response Header, Content-Type에 charset이 중복 설정되던 문제가 해결되었다.
Web Service Information Page의 Endpoint Address가 Multiple Endpoints를 반영하지 못하는 문제 해결
Web Service Information Page(웹 서비스를 디플로이한 후 WSDL 링크를 볼 수 있는 페이지)에서 Endpoint Address가 Multiple Endpoints일 경우 같은 페이지에 여러 개의 Endpoint를 나타낼 수 있도록 수정하였다.
JAX-RPC 웹 서비스 보안에서 메시지 부분 암호화 버그 수정
wrapped/literal이 아닌 웹 서비스에서 WSDL의 특정 Part에 해당하는 메시지의 특정 부분만을 암호화할 때 발생하던 버그를 수정하였다.
wsdl2java 콘솔 툴 관련 버그 수정
"-nokeepsrc -compile" 옵션을 사용할 경우 에러가 발생하던 현상을 패치하였다.
fast deploy할 때 문제점 해결
fast deploy할 때 추가적으로 엔진 외부에서 생성된 클래스들에 대해서 매핑 파일의 정보와 일치하는지를 확인하는데 이때 발생하는 오류 현상을 수정하였다.
NonTx type의 datasource일 경우 tm-timeout을 체크하지 않도록 수정
getConnection할 때 transaction timeout을 체크하는 로직이 있는데, non-XA type의 커넥션 풀일 경우에도 이를 수행하는 문제가 있어서 이를 수정하였다.
max-use-count가 될 때, exception대신 replace한다는 로그를 출력하도록 수정
max-use-count가 되었을 경우 exception을 던지지 않고 바로 replace가 된다는 로그를 info 레벨로 남기도록 수정하였다.
XADataSource에서 check-query설정하면 에러가 발생하던 문제 수정
XADataSource를 사용할 경우 check-query 설정을 하게 되면, DataSource 바인딩될 때 에러가 발생하던 현상을 수정하였다.
LocalXADataSource 사용할 때 에러 발생하던 문제 수정
LocalXADataSource를 사용할 때 dba-timeout기능이 동작하면 해당 connection의 session ID를 가져오기 위해 query를 날리는데, 이때 SQLException이 발생하면 delist를 해주지 않고 다른 connection을 얻어와 enlist를 하다가 같은 tx 안에서는 두 개 이상의 local transaction을 enlist할 수 없다는 에러가 발생하던 문제를 수정하였다.
statement caching 사용할 때 Memory Leak 발생
JEUS에서 제공하는 statement caching은 preparedStatement를 wrapping해서 Hashtable에 저장하는 방식을 사용한다. 그런데 statement를 삭제할 때 statement를 close해주지 않아서 driver 내부적으로 계속 instance가 쌓여있게 된다. Hashtable에서 삭제할 때 driver에서 생성한 preparedStatement를 close해서 Memory Leak을 없애도록 수정하였다.
UserTransaction.setTransactionTimeout()이 다른 Thread 에 영향을 미칠 수 있는 문제 해결
특정 request에서 Thread pool을 사용할 때 해당 thread에서 호출한 UserTransaction.setTransactionTimeout()이 다른 request를 위해서 thread pool에서 제공한 thread에도 영향을 미칠 수 있어, default timeout이 제대로 적용되도록 수정하였다.
JEUS에서 제공하지 않는 XAResource가 Transaction의 enlistResource, delistResource 메소드를 지원하도록 수정
JEUS에서 제공하는 JDBC, JMS 등의 XAResource 이외에 사용자가 직접 생성한 XAResource가 enlistResource, delistResource를 통하여 transaction에 연결될 수 있도록 수정하였다.
TMXAResource, InterposedTransactionManager 관련 버그 수정
TMXAResource, InterposedTransactionManager를 이용하여 JEUS의 Transaction을 가져와 사용할 때, 상황에 따라서 발생할 수 있는 문제점에 대한 고려가 이루어졌다.
DB2를 사용할 때 JVM crash 현상에 대해 조치
DB2의 XADataSource 사용할 때, connection이 close 된 XAResource를 parameter로 사용하여 XAResource.isSameRM() 호출할 때 JVM crash 현상이 발생할 가능성이 있어 이것을 수정하였다. 이는 JEUS의 문제가 아니라 DB2 JDBC 드라이버의 문제점 때문에 발생하는 현상이다.
Deploy 실패한 모듈을 undeploy할 경우 에러가 발생하는 문제 수정
Deploy 실패한 모듈을 undeploy할 경우, NullPointerException이 발생하던 문제가 수정되었다.
jeusadmin에서 testdsconfig명령을 사용할 때 에러가 발생하던 문제 수정
BlackboxDataSource로 설정된 datasource를 테스트 하기 위해 jeusadmin에서 testdsconfig할 때 에러가 발생했었다. 이 현상은 드라이버 클래스에 대한 로딩 과정이 없어서 DriverManager가 클래스를 찾지 못하던 것 때문에 에러가 발생하던 문제로, 이를 적절한 위치에서 드라이버 클래스 로딩을 하도록 수정하여 해결하였다.
클러스터 상태에서의 버그 수정
클러스터된 상태에서 특정 노드에만 존재하는 모듈을 디플로이할 경우, FileNotFoundException이 발생하는 현상을 수정하였다.
기타 수정 사항
디플로이 대상을 선택할 때, 모듈 관련 엔진 컨테이너만 보여지도록 수정되었다.
어노테이션을 사용한 모듈 디플로이할 때, 애플리케이션 홈/디렉터리 선택 리스트에 보여지도록 수정되었다.
관리자 계정은 삭제할 수 없도록 수정되었다.
Resource permission에서 action이 하나일 때, 무조건 성공하는 버그 수정
resource permission에서 action이 하나인 경우 서로 다른 permission임에도 불구하고 permission check에 성공했던 버그를 수정하였다.
JEUS의 baseport 또는 container port로 JMS서비스 제공 가능
기존에는 JMSMain.xml의 <jms-server><service-config>에 ip address와 port를 설정하면 service-channel이 해당 포트를 열어 서비스를 하였으나 JEUS의 baseport로 JMS서비스를 제공하기 위해 oneport설정을 추가하였다. 다음과 같이 <server-url>에 oneport를 설정한다.
<사용 예>
<jms-server> <service-config> <server-url>oneport</server-url> … </service-config> </jms-server>
만약 cluster를 사용할 경우라면 아래처럼 <jms-server-cluster><jms-server-info><oneport>스키마의 값을 true로 하고 <jms-port>는 jeus manager(default container에 한해서)나 container의 baseport를 지정해야 한다.
<사용 예>
<jms-server-cluster> <jms-server-info> <broker-name>active</broker-name> <broker-id>1</broker-id> <oneport>true</oneport> <ip-address>195.555.1.123</ip-address> <jms-port>9741</jms-port> </jms-server-info> <jms-server-info> <broker-name>standby</broker-name> <broker-id>2</broker-id> <oneport>true</oneport> <ip-address>195.555.1.456</ip-address> <jms-port>8741</jms-port> </jms-server-info> </jms-server-cluster>
자세한 설명은 “JEUS MQ 안내서”의 “5.3.1. 서비스 채널 설정” 부분을 참조한다.
로깅 기능 추가
forward, include에 대해서 log 레벨이 FINE 이상일 때 include와 forward의 로그 정보를 보여주는 기능이 추가되었다.
respone가 commit에 대해서 log 레벨이 FINE이상일 때 commit 로그와 thread dump에 로그를 남기는 기능이 추가되었다.
중앙식 세션 서버 속성 값들에 대한 validation 기능 추가
중앙식 세션 서버의 설정 값인 resolution, threadpool의 min, max 등에 대한 validation 과정이 강화되었다.
MBean을 통해 세션 서버 목록을 얻거나 삭제하는 기능 추가
세션 서버에서 세션 ID 목록 가져오기
세션 서버에서 특정 ID 세션 삭제
세션 서버에서 특정 세션 존재 유무 확인
이를 사용하기 위해서는 MBean을 사용해야 하는데 MBean에 추가된 methods는 다음과 같다.
SessionContainerMoMBean.getLocalSessionKeys()
routing true이거나 중앙식 세션 서버 사용하지 않을 때 웹 컨테이너 로컬에서 가지고 있는 세션 목록
SessionManagerMoMBean.getAllSessionKeys()
중앙식 세션 서버에서 가지고 있는 세션 목록
SessionContainerMoMBean.invalidateSession(String id)
특정 ID의 세션을 삭제한다.
SessionContainerMoMBean.isExist(String id)
웹 컨테이너 로컬에서 세션이 존재하는 지 확인
SessionManagerMoMBean.isExist(String id)
중앙식 세션 서버에 세션이 존재하는지 확인
Web Service Application을 Deploy할 때 Portable artifacts 자동 생성 기능 추가
@WebService인 경우, portable artifacts가 없다면, SEI package의 jaxws subpackage에 portable artifacts를 자동으로 생성한다.
JAX-WS JMS Transport 기능 지원
SOAP 메시지를 HTTP가 아닌 JMS Transport를 통하여 주고 받는 기능이 추가 되었다.
자세한 설명은 “JEUS Web Service 안내서”의 “제12장 JAX-WS JMS Transport” 부분을 참조한다.
WSDL이 명시적으로 SOAP1.2를 사용하는 경우 @BindingType 없이 SOAP 1.2 binding over HTTP 지원
WSDL이 명시적으로 SOAP1.2를 사용하는 경우 @BindingType annotation이 명시되어 있지 않더라도 SOAP 1.2 binding over HTTP를 지원한다
wsgen, wsimport에 -policy 옵션 추가
복잡한 WS-Policy를 쉽게 작성할 수 있도록, JEUS의 service-config.xml에 policy를 작성 한 후에 wsgen, wsimport 툴을 실행하여 WS-Policy가 적용된 산출물을 생성할 수 있는 옵션을 추가하였다. wsgen, wsimport 실행할 때 "-policy service-config.xml" 옵션을 추가해주면 된다.
자세한 설명은 “JEUS Web Service 안내서”의 “제13장 웹 서비스 정책” 부분을 참조한다.
하나의 impl class를 복수의 JAX-WS 기반 웹 서비스로 deploy 가능하게 함
하나의 impl class를 복수의 JAX-WS 기반 웹 서비스로 deploy 가능하게 되었다.
web.xml에 동일한 impl class를 여러 servlet-name 으로 넣을 수 있게 되었다.
XADataSource에 대해 shareable resource속성 지원
XADataSource를 사용하는 경우에 한 Transaction 안에서 같은 물리적인 XAConnection을 사용하도록 하는 기능이 추가되었다. 이 기능을 사용하고 싶지 않다면 @Resource혹은 <resource-ref>의 <res-sharing-scope>속성을 shareable, unshareable로 설정할 수 있다.
connection-trace기능 추가
사용자가 커넥션 풀 설정에서 connection trace를 true로 하면 invocation manager에서 Warning 또는 AutoClose될 때 해당 커넥션의 getConnection() stack trace를 보여주도록 하는 기능이 추가되었다. 설정하는 방법은 다음과 같다.
<사용 예>
<connection-pool> <connection-trace> <enabled>true</enabled> </connection-trace> </connection-pool>
자세한 설명은 “JEUS Server 안내서”의 “8.3.4. Connection Pool 설정” 부분을 참조한다.
non-validation-interval 기능 추가
기존의 check-query기능은 getConnection할 때와 check-query-period의 시간 간격마다 수행되도록 되어 있다. 하지만 non-validation-interval기능을 사용함으로써, getConnection이 한번 일어난 후 check-query-interval에 설정한 시간 동안은 Check-Query를 하지 않게 할 수 있다.
자세한 설명은 “JEUS Server 안내서”의 절 8.3.4. “커넥션 점검(Connection Validation or Check Query)” 부분을 참조한다.
DB2 XADataSource에 대해 <keep-connection-handle-open> 기능 추가
해당 설정을 통해 connection handle을 계속 열어두게 함으로써, DB2 Driver가 무한루프에 빠져 Leak이 걸리는 현상을 막을 수 있다.
자세한 설명은 “JEUS Server 안내서”의 “8.3.4. Connection Pool 설정” 부분을 참조한다.
주요 Vendor별 JDBC DataSource구성 예제 수정 및 추가
주요 vendor별 JDBC DataSource구성하는 예제를 매뉴얼에 추가하였다. 매뉴얼에 추가 및 수정된 사항은 다음과 같다.
Oracle Thin
Oracle OCI
DB2 Type 4(JCC)
DB2 Type 2(JCC)
Sybase jConnect 5.x, 6.x
MSSQL 2005 Type 4
Informix Type 4
Tibero Type 4
이에 대한 자세한 설정은 “JEUS Server 안내서”의 “Appendix B. JDBC Datasource 구성 예제” 부분을 참조한다.
WebAdmin에서 JDBC DataSource설정 하는 부분 수정
기존 WebAdmin에서 JDBC DataSource를 설정 하는 부분이 Blackbox DataSource로 설정하게 되어 있거나 잘못 설정된 부분에 대해 수정하였다. 수정된 사항은 다음과 같다.
Oracle OCI 방식 변경
MySQL (Connect/J 5.x) 방식 추가
Sybase JConnect 6.x 방식 추가
Sybase JConnect 4.5 방식 삭제
Informax DataSource방식 추가
MSSQL 2005 DataSource방식 수정
DB2 type2 (jcc이전) 방식 수정
jeus.transaction.Transaction 인터페이스 제공
jeus에 특화된 Transaction 서비스를 위하여 jeus.transaction.Transaction 인터페이스가 추가되었다.
TxHelper에 getTransactionRemainingTimeout() 메소드 추가
JEUS container에서 운영되는 시스템이 아닌 외부의 환경에서 jeus.transaction.TxHelper.getClientInterposedTransactionManager()를 통해서 InterposedTransactionManager를 이용할 수 있도록 하였다.
transaction 관련 MBean 기능 개선
현재 JEUS Transaction Manager에서 사용하는 transaction에 대하여 모니터링 및 제어를 강화하기 위해서 jeus.management.j2ee.JTAResourceMBean 에 getTransactionInfos(), getIncompletedTransactionInfos(), getRetryingXAResourceInfos() 메소드가 추가되고 getAllIncompletedTx() 메소드가 삭제되었다.
WebAdmin에서 transaction 모니터링 기능 향상
JEUS 안에 있는 다양한 상태의 transaction에 대하여 WebAdmin을 이용한 모니터링 및 제어 기능이 강화되었다.
jeusadmin의 logging 관련 기능 향상
기존에는 jeusadmin 을 사용하는 동안 log가 많이 보이게 되는 문제점이 있었다. 이를 개선하여 jeusadmin은 기본적으로 console에 log를 보여주지 않게 하고 JEUSMain.xml이나 jeuslogging.property 등의 영향을 받지 않도록 수정하였다. jeusadmin의 log메시지를 확인하고 싶다면 -verbose옵션을 이용하도록 한다.
jeusadmin의 현재 긴 help 메뉴 내용 정리
현재 jeusadmin 에서 help 명령을 사용했을 때 출력되는 메뉴가 너무 길어서 보기 힘들다. 이를 개선하기 위해 help 명령을 실행하면 설명을 제외한 명령어들을 그룹화하여 보여주어 한 눈에 어떤 명령이 있는지 쉽게 알 수 있도록 수정하였다. 기존과 동일한 help 메뉴를 보기 위한 옵션도 추가되었다.
자세한 설명은 “JEUS Reference Book”의 “4.2.3. 공통 명령어” 부분을 참조한다.
jeusadmin에서 여러 가지 transaction정보를 볼 수 있는 명령 추가(txlist)
jeusadmin에서 txlist명령을 이용하여 여러 가지 tx들(in-flight, in-doubt, retrying)을 모니터링할 수 있는 기능을 추가하였다.
자세한 설명은 “JEUS Reference Book”의 “4.2.8. 트랜잭션 관련 명령어” 부분을 참조한다.
jeusadmin에서 엔진 컨테이너를 선택할 수 있는 명령 추가(setcon)
jeusadmin에서 특정 container를 선택하고자 할 때 "setProperty container.name node_container"와 같은 식으로 다소 긴 명령을 입력해야 하는 불편함이 있다. 이를 해소하기 위해 setcon명령으로 쉽게 container를 선택 할 수 있다.
자세한 설명은 “JEUS Reference Book”의 “4.2.3. 공통 명령어” 부분을 참조한다.
jeus를 실행시키는 script에 usage와 help 추가
jeus 실행시 '-h' 옵션 제공하여 usage와 help를 보여주는 기능을 추가하였다.
자세한 설명은 “JEUS Reference Book”의 “제3장 jeus” 부분을 참조한다.
jeusadmin에서 JDBC connection pool을 새로 생성하거나 재구성하는 명령 추가(createds/refreshds)
jeusadmin에서 jdbc connection pool을 생성하거나 재구성하는 명령어를 추가하였다.
createds : jdbc connection pool을 생성하는 명령어
refreshds : jdbc connection pool을 재구성하는 명렁어
자세한 설명은 “JEUS Server 안내서”의 “8.4.1. DB Connection Pool의 제어” 부분을 참조한다.
JDBC connection의 thread stack을 출력할 수 있는 기능 추가
jeusadmin에서 dsconinfo명령어를 -id옵션과 같이 사용하면 특정 connection에 대한 thread stack정보가 출력된다. 예를 들어, pool 이름이 oracle_pool이고, 그 안에 생성한 connection id가 oracle_pool-1이라고 한다면 예제와 같이 입력한다.
<사용 예>
johan> dsconinfo -con johan_container1 -id oracle_pool-1 oracle_pool
단, 해당 datasource는 connection-trace기능을 사용하고 있어야 한다.
자세한 설명은 “JEUS Server 안내서”의 “8.4.2. DB Connection Pool의 모니터링” 부분을 참조한다.
jeusadmin의 ti명령어에서 특정 thread정보만 출력 가능한 -f 옵션 추가
jeusadmin console의 ti 명령어를 중 -f 옵션을 사용하여 (a)ctive, (i)dle, (b)locked, (r)econnecting중 특정 정보만 조회할 수 있게 기능이 추가 되었다.
자세한 설명은 “JEUS Reference Book”의 “4.2.5. 서블릿 엔진 관련 명령어” 부분을 참조한다.
백업 노드 설정 및 복원 기능 추가
WebAdmin을 통하여 노드 상태를 백업할 수 있도록 설정 및 복원하는 기능이 추가되었으며 사용법은 다음과 같다.
메인 뷰의 설정 메뉴 선택 후 설정 관리 탭의 백업 노드 설정 페이지에서 설정 및 적용이 가능하다.
백업된 경로는 {JEUS_HOME}/webhome/admin_home/WEB-INF/backup/{설정한 백업 노드 이름명} 이다.
자세한 설명은 WebAdmin 설정 메뉴 페이지에서 도움말 메뉴를 선택하여 참조한다.
Thread Dump 기능 추가
WebAdmin을 통하여 Thread Dump 명령을 실행할 수 있는 기능이 추가되었으며 사용법은 다음과 같다.
JEUS 매니저 Thread Dump : JEUS 노드 트리 뷰에서 노드 이름에서 오른쪽 버튼 클릭 후 Thread Dump 메뉴를 선택한다.
컨테이너 Thread Dump : JEUS 노드 트리뷰에서 컨테이너이름에서 오른쪽 버튼 클릭 후 Thread Dump 메뉴를 선택한다.
자세한 설명은 “JEUS WebAdmin 안내서”의 “2.1. 화면 구성” 부분을 참조한다.
버전 관리 기능 추가
애플리케이션 모듈 디플로이의 버전 관리 탭을 이용하여 디플로이를 할 경우, 기존 모듈을 언디플로이하고 새로운 모듈을 디플로이 할 수 있는 기능이 추가되었다. 또한 디플로이할 때 '버전 관리 사용'을 체크할 경우, 기존에 디플로이된 모듈을 백업하는 기능을 제공한다.
자세한 설명은 WebAdmin 온라인 도움말 "애플리케이션 디플로이" 부분을 참조한다.
EJB compile을 실행할 때 Class Name 생성 규칙 변경
디플로이 과정에서 EJB compile을 실행할 때 module name과 application name에 대한 의존성을 제거하기 위해서 hash code를 이용하도록 Class Name 생성 규칙을 변경하였다.
local entity bean에 clustering 설정이 있는 경우 NullPointerException 발생하는 현상 수정
local entity bean에 clustering 설정이 되어 있을 경우 디플로이 과정에서 JNDI binding을 할 때 NullPointException이 발생하는 경우가 있어서 이를 수정하였다.
timeout 값에서 0의 의미를 변경
기존에는 pasivation timeout과 disconnect timeout을 0으로 지정할 경우 즉시 timeout 이벤트가 발생하였으나, 이후에는 -1과 같이 취급하여 timeout event를 사용하지 않는 경우로 인식하게 하였다.
Class FTP 값이 false 경우의 에러 메시지 변경
Class FTP 설정의 기본값이 false이기 때문에 사용자가 이 설정을 true로 명시하지 않을 경우 원격의 클라이언트가 stub을 받으려고 할 때 에러가 발생한다. 이때 에러 메시지에 "javax.naming.NamingException: java.lang.ClassNotFoundException: Could not find the class from the classftp server(please check if classftp is enabled)"를 추가하여 사용자에게 Class FTP 설정을 점검하라고 알려준다
NIO Http Listener에서 HeapByteBuffer를 사용할 수 있도록 변경
DirectByteBuffer 사용할 때 문제가 있을 수 있어 설정에 따라 HeapByteBuffer도 사용할 수 있도록 수정되었다.
jeus.servlet.nio.directbuffer=true 설정된 경우 DirectByteBuffer가 사용되고 그 외의 경우에는 HeapByteBuffer가 사용된다.
NIO Listener (HTTP, TCP, TMAX)에 Selector 개수 설정 태그 추가 및 디폴트 값 수정
listener가 여러 개 설정된 경우 thread가 많아지는 문제가 생겨 NIO Listener (HTTP, TCP, TMAX) 의 Selector 개수를 디폴트 1개로 수정하였다. selector 개수의 설정은 listener 태그 아래에 <selector-count> 로 설정 가능하며, 기존의 -Djeus.net.selector.num 옵션은 삭제되었다.
JSF RI를 기존 1.2_04 에서 1.2_06-b02-FCS로 변경
lib/shared 아래의 jsf_ri_1.2_04 디렉터리가 제거되고, jsf_ri_1.2디렉터리로 변경되었으며 구현체의 버전은 lib/shared/libraries.xml 파일에서 1.2_06으로 수정되었다.
세션 관련 기능 변경
서로 다른 context 를 include하는 경우 context 별로 session이 따로 유지되도록 하였다.
JEUS4.x의 log level과 JEUS6.x 대의 log level 매핑 변경
JEUS4.x의 log level방식 중 "INFORMATION" level을 기존 "CONFIG"에서 "INFO" level로 변경하였다.
로그 레벨 매핑 표
log표시 JEUS6(java level) JEUS4 0 SEVERE FATAL 1 WARNING NOTICE 2 INFO INFORMATION 3 CONFIG 4 FINE DEBUG 5 FINER 6 FINEST 7 ALL
JAXB, JAX-WS 2.1 API를 endorsed library 디렉터리에 추가
JAXB, JAX-WS 2.1 API를 endorsed library 디렉터리에 추가하여 다른 API를 찾지 못하는 문제를 해결하였다. JEUS_HOME/lib/endorsed/ 디렉터리에 activation.jar, webservices-api.jar가 추가되었다(기존 jaxb-api.jar, jaxws-api.jar, saaj-api.jar 파일은 제거 되었다).
@WebServiceProvider의 serviceName attribute가 없는 경우에도 default url-pattern을 지원
@WebServiceProvider의 serviceName attribute가 없는 경우에도 default url-pattern을 지원한다. 여기서 Provider의 @WebServiceProvider가 serviceName attribute를 가지고 있지 않다는 것은 wsdlLocation attribute 역시 없다는 것을 전제로 한다.
setTimeout 지원 클래스 변경
setTimeout을 지원하기 위해 사용한 HTTPSender를 deprecated하고 HttpURLConnectionSender로 setTimeout 기능을 지원한다.
<사용 예>
AddNumbersImpl port = new AddNumbersImplService().getAddNumbersImplPort(); ((javax.xml.ws.BindingProvider)port).getRequestContext().put( "com.sun.xml.ws.request.timeout", new Integer(10000));
pooling의 step값 default 변경
ConnectionPool의 속성 중 step의 default값을 4에서 1로 변경하였다.
Invocation Manager의 connection 관련 로그 개선
JDBC connection의 해당 connection ID와 actual connection instance를 로깅하도록 개선하였다.
AutoClose일 때도 Warning 로그가 같이 출력되도록 개선하였다.
auto-deploy 관련 <check-absolute-path> 태그 설정 변경
원하는 디렉터리에 autodeploy설정을 하고자 할 경우, 다음과 같이 JEUSMain.xml의 <absolute-path> 태그에 디렉터리 경로를 지정하고, <check-absolute-path> 태그를 설정한다(기존에는 <check-absolute-path> 태그가 <absolute-path> 사용 여부를 결정하는데 사용되었다).
<check-absolute-path> 태그를 true로 설정할 경우, 해당 디렉터리에 대해 오토 디플로이가 가능하다. 즉, 애플리케이션을 변경할 경우에 리디플로이를 실행한다.
<check-absolute-path> 태그를 false로 설정할 경우, 해당 디렉터리에 대해 오토 디플로이 설정을 하지 않는다. 즉, 애플리케이션을 변경할 경우에 리디플로이를 실행하지 않는다.
<사용 예>
<application> <absolute-path>/home/jeus6/webhome/test</absolute-path> <auto-deploy> <check-absolute-path>true</check-absolute-path> <auto-deploy-check-interval>20000</auto-deploy-check-interval> </auto-deploy> <deployment-target> <target> <engine-container-name>jeus6_container1</engine-container-name> </target> </deployment-target> </application>
자세한 설명은 “JEUS Applications & Deployment 안내서”의 “제3장 애플리케이션 작성 및 Deploy” 부분을 참조한다.
generated 디렉터리 구조 변경
application을 컴파일할 때 생성되는 파일들에 대하여 webhome의 컨테이너 디렉터리 아래에 _generated_ 디렉터리 하위에 생성하도록 수정하였다(기존에는 exploded 모듈에 대해서는 container 디렉터리가 아닌 그 디렉터리 자체에 파일을 생성하였다). 이로써 read-only 디렉터리를 디플로이 할 수 없던 문제가 수정되었다.
자세한 경로는 다음과 같다.
application(.ear) : JEUS_HOME/webhome/container_name/_generated_/j2ee-apps/application_name/module_name/
standalone-module(.jar, war 등) : JEUS_HOME/webhome/container_name/_generated_/j2ee-modules/module_name/
generated 디렉터리를 별도로 생성함으로써 read-only 디렉터리를 디플로이 할 수 없던 문제가 수정되었다.
여러 엔진 컨테이너에 Exploded 모듈 디플로이 가능하도록 변경
Exploded 모듈에 대하여 여러 엔진 컨테이너에 디플로이가 가능하도록 수정하였다.
appcompiler에서 -client 옵션의 동작 방식 변경
기존 appcompiler -client <stub-file> <application-file>을 통해 나오는 stub-file은 오직 generated 된 stub이나 skeleton을 담아서 준다. 실제로는 EJB 호출을 위해서는 위 stub file 이외에도 각종 interface class 등이 필요하다. 그래서 appcompiler에서 생성된 client stub이 EJB 호출에 필요한 모든 class를 갖게 하도록 수정하였다.
WebAdmin 온라인 도움말 보강 및 매뉴얼의 모니터링 부분 추가
자세한 설명은 WebAdmin 온라인 도움말과 “JEUS WebAdmin 안내서”의 “제5장 모니터링” 부분을 참조한다.