Sun GlassFish Message Queue 4.4 업데이트 1 릴리스 노트

Message Queue 4.4 업데이트 1 및 최신 릴리스에서 해결된 버그

Message Queue 4.4 업데이트 1에는 새 버그 수정이 포함되고 Message Queue 4.x의 이전 릴리스에서 수정된 버그가 통합되어 있습니다.

다음 절에서는 각 릴리스에서 해결된 버그를 소개합니다

Message Queue 4.4 업데이트 1에서 해결된 버그

다음 표는 Message Queue 4.4 업데이트 1에서 해결된 버그를 설명합니다. 이 중 일부는 "(OpenMQ)"라고 표시되어 있습니다. 이는 해당 문제가 Sun GlassFish Message Queue을 기반으로 하는 Open Message Queue 오픈 소스 프로젝트에서 해결되었음을 나타냅니다.

표 1–7 Message Queue 4.4 업데이트 1에서 해결된 버그

버그 

설명 

6590909 

주소 목록을 덮어쓸 때 DIRECT 모드 MDB가 원격 브로커에 연결하지 않음 

6616704 

한 세션 안에서 다수의 소비자가 생성된 경우 브로커 메모리 증가 

6745761 

동일한 XA TX(JMSJCA 사용)에서 두 연결을 사용할 때 XAResource.isSameRM()이 True를 반환해야 함 

6745763 

동일한 XA TX(JMSRA DIRECT 모드)에서 두 연결을 사용할 때 XAResource.isSameRM()이 True를 반환해야 함 

6745768 

동일한 XA TX(JMSRA LOCAL/REMOTE)에서 두 연결을 사용할 때 XAResource.isSameRM()이 True를 반환해야 함 

6760450 

MQ(GF) 인스턴스 중지 없이 시스템을 재부팅할 경우 메시지 저장소가 손상됨 

6766241 

UMS: SendMsg.html AJAX 예제가 기본 컨텍스트 루트로 /ums를 사용함. /imqums를 사용해야 함 

6766852 

DirectXAResource가 브로커 CONFLICT 상태를 "TxID가 이미 사용 중임"이라고 해석함 

6799428 

DMQ의 비영속 메시지/비지속 예치 메시지를 사용할 수는 없으나 탐색은 가능함 

6799428 

DMQ의 비영속 메시지/비지속 예치 메시지를 사용할 수는 없으나 탐색은 가능함 

6809353 

posgtresql(8.1)이 있는 openmq 4.3 HA가 작동하지 않음(imqbrokerd를 시작할 수 없음) 

6809750 

clientId 연결에 대한 연결 풀링(JMSRA로부터)이 작동하지 않음 

6812198 

MQ 토픽 메트릭을 사용한 모니터링에서 클래스캐스트 예외 발생 

6832000 

MQ reapExcessConnection JDBC 연결에서 높은 CPU 스핀 발생 

6833109 

JDK6이 있는 AIX에서 MQClusterMonitor JMX 샘플 응용 프로그램 예외 발생 

6835420 

NoGCDefault 기본값이 정확하지 않게 산출되었습니다. 메모리가 부족할 때 과도한 GC가 발생할 수 있습니다. 

6852018 

오류 메시지 "지속 가능 소비자{0}을(를) 추가할 수 없습니다. 연결에 ClientID가 설정되지 않았습니다." 잘못 읽힘 

6856991 

브로커 재시작 후 지속 가능 소비자 PREPARED 트랜잭션을 롤백하면 NullPointerException 발생 

6874125 

경고: MQJMSRA_DC2001: connectionId=555670328604044289:_destroy():가 연결에서 호출됨... 

6878945 

RFE: JMSBridge:는 사용자 이름/암호를 지정하여 연결 팩토리로부터 연결을 생성할 수 있도록 함 

6881493 

HA 브로커에 대해 관리 임시 대상이 저장되지 않아야 함 

6881753 

RFE JMSBridge:이 각 메시지를 대상으로 전송하기 전에 jmsbridge 이름으로 해당 메시지를 태깅할 수 있도록 함 

6884673 

MQ 4.4 Broker가 MQ 3.7/3.6 Broker와의 클러스터 연결을 설정할 수 없음 

6886390 

DMQ로 이동한 영속/Txn 게시 메시지는 DMQ로부터 해당 메시지를 소비할 때 'mq.sys.dmq 없음' 오류를 초래할 수 있음 

6886515 

JMX를 사용하여 내장 브로커에서 대상을 삭제할 때 AccessControlException 발생 

6890628 

브로커 속성 "imq.autocreate.destination.isLocalOnly=true" 설정이 유효하지 않음 

6891615 

glassfish에서 브로커 4.3을 실행할 때 선택기가 작동하지 않는 경우가 있음 

6891624 

Msgs 'Remote'가 'imqcmd list dst'의 'Count'보다 커짐 

6891629 

선택기에서 산술적 예외 발생 시 사용자가 이해하기 쉬운 메시지 필요 

6891717 

ifimq.transaction.autorollback=true,autorollback PREPARED ack가 명확하지 않아 TransactionAckExistEx 발생 

6891802 

"[B4061]:Can not use Transaction ID..currently in use"(트랜잭션 ID를 사용할 수 없음. 현재 사용 중임)가 원격 tx ack를 인수한 후 브로커 재시작 시 표시됨 

6892512 

메모리 누출: 임시 대상이 tempDest.delete() 호출 시 연결에서 제거되지 않음 

6895040 

마스터 브로커에 임시 대상이 있는 경우 uidprefix 잠금 시간 초과 후 시작할 때 슬레이브 브로커가 uidprefix를 가져오지 못함 

6896230 

슬레이브와 동기화한 후 마스터 브로커를 재시작하는 동안 마스터 브로커에서 생성된 새 소비자가 일부에 전파되지 않을 수 있음 

6896764 

TransactionAcknowledgement의 equals 메소드가 올바르지 않음 

6898355 

인수가 완료될 때까지 대기하지 않고 브로커를 재시작할 때 클러스터 managr init에서 인수 잠금이 재설정됨 

6901405 

RFE: 지정한 경우 JDBC 벤더 정보 및 벤더 속성 기록 

16(OpenMQ) 

glassfish에서 브로커 4.3을 실행할 때 선택기가 작동하지 않는 경우가 있음 

17(OpenMQ) 

posgtresql(8.1)이 있는 openmq 4.3 HA가 작동하지 않음(imqbrokerd를 시작할 수 없음) 

22(OpenMQ) 

설치 프로그램이 존재하지 않는 바이너리를 참조하고 실패함 

25(OpenMQ) 

TemporaryTopic 생성 시 메모리 누출 

29(OpenMQ) 

브로커 분리 

30(OpenMQ) 

Msgs 'Remote'가 'imqcmd list dst'의 'Count'보다 커짐 

31(OpenMQ) 

선택기에서 산술적 예외가 발생한 경우 사용자가 이해하기 쉬운 메시지 필요 

32(OpenMQ) 

int-> long 오버플로우 해결 

33(OpenMQ) 

ja 로케일에서 실행 시 OpenMQ 설치 프로그램: "Invalid SwiXML Descriptor" 오류 

Message Queue 4.4에서 해결된 버그

다음 표는 Message Queue 4.4에서 해결된 버그를 설명합니다.

표 1–8 Message Queue 4.4에서 해결된 버그

버그 

설명 

6242247 

두 브로커가 모두 동일한 이름이 사용된 시스템에 있는 경우 MQ 클러스터에 마스터 브로커 시작 및 정지  

6760937 

브로커가 다시 시작되는 경우 DB에 다시 연결되지 않음  

6763252 

브로커가 만료/제거된 메시지를 인식할 때 NPE가 아닌 의미 있는 메시지를 기록해야 함 

6765410 

마스터 브로커가 로컬 인터레스트를 2회 보내고 이로 인해 영구 가입이 이미 활성화된 슬레이브 예외가 발생함 

6796506 

원격 PREPARE 회신 수신 시 시간 초과된 경우 롤백 이후 원격 PREPARED 메시지가 다시 전달되지 않음 

6807708 

마스터 브로커를 실행하지 않는 경우 임시 대상 삭제에 실패함 

6812037 

RFE: MQMessageListenerFunc가 오류를 반환할 경우 afterMessageDelivery에 MQ_CALLBACK_RUNTIME_ERROR 전달 

6812755 

MessageDelivery 콜백에서 오류를 반환할 경우 양호 수준인 메시지가 경고여야 함 

6816023 

Message.setStringProperty() 예외에서 부적합한 문자 예외에 속성 이름을 표시하지 않음 

6819095 

RFE: 클러스터가 입출력 스트림 버퍼 크기 및 TcpNoDelay 설정을 지원해야 함 

6820585 

'imqcmd list txn'이 원격 브로커 완료 대기 중 COMMITTED 클러스터 트랜잭션을 표시하지 않음 

6820588 

로컬 및 원격 메시지를 모두 소비하는 클러스터 트랜잭션이 대기 상태에서 COMMITTED로 유지됨 

6821639 

MQRA-DIRECT 모드에 대한 AS 복구 중 rollback/commitTransaction시 NPE 발생 

6823364 

RFE: Solaris에서 C-API 컴파일러를 Sun Studio 12로 업그레이드 

6829113 

Tuxedo TM 롤백에서 과도한 부하로 트랜잭션이 시간 초과되었을 때 ConcurrentModificationException 발생 

6832197 

비 트랜잭션 원격 ack에서 클라이언트가 ackack를 요청하지 않는 경우 원격 응답을 대기하지 않아야 함 

6834735 

START 상태에서 Tuxedo TM 시간 초과 시 의미를 알 수 없는 로그 메시지 "Unexpected Broker Interal Error"(예기치 않은 브로커 내부 오류) 발생 

6836364 

와일드카드 가입자의 주제가 가입자보다 먼저 생성된 경우 해당 가입자가 원격 메시지를 수신하지 못함  

6836691 

XA 수신기 롤백 후 msg를 커밋하면 수신에서 HA(JCAPS):msg가 이미 예외를 제거함 

6836749 

HA(JCAPS): durables 중 하나가 메시지를 롤백한 다음 완결한 후 다시 수신 시 저장소에 ack가 있는 예외 발생 

6837671 

HA(JCAPS): 성공적인 커밋 후 XAResourceImpl.rollback을 수행할 때 커밋된 메시지를 계속하여 다시 전달함 

6839193 

RFE: C++ 컴파일러를 Visual Studio 2008 SP1로 업그레이드 

6845625 

원격 소비자가 반복적으로 생성/종료되면 브로커가 메모리 부족 상태가 됨 

6852207 

원격 브로커에 메시지를 보내는 NPE로 인해 read msg pkt에서 원격 브로커가 "메시지를 처리할 수 없게" 됨 

6853822 

FAILED txn을 종료할 때 오류 메시지 "Cannot perform operation END_TRANSACTION"(END_TRANSACTION 작업을 수행할 수 없음)가 혼동을 줌 

6854142 

3분 간격으로 원격 브로커에 대한 "클러스터 연결 대기 중" "종료된 클러스터 연결" 

6858121 

원격 txn이 있는 경우 'imqcmd list txn'의 브로커 로그에 'Unknow transaction'(알 수 없는 트랜잭션)이라는 경고가 혼동을 줌 

6858488 

원격 참가자 브로커가 자체 COMMITTED tx을 제거한 경우 txn 홈 브로커에서 COMMITTED txn이 제거되지 않음 

6858905 

Consumer.destroyConsumer의 ConcurrentModificationException  

6861362 

RFE: JMSBridge: 목표 대상과 소스 Message.getJMSDestination과의 자동 매핑 지원 

6861528 

RFE: 목표 내 다양한 대상에 대한 JMSBridge: MessageTransformer.transform() 분기 메시지 허용 

6861653 

트랜잭션 부하가 높은 상황에서 불완전한 다운 원격 브로커를 커밋하기 위해 과도한 클러스터 트랜잭션 정보를 전송함 

6862413 

오류 메시지 "mq://xxx.xxx.xx.xx:pppp/ ... is reachable within 60 seconds"(60초 안에 mq://xxx.xxx.xx.xx:pppp/ ...에 연결할 수 있음)가 혼동을 줌 

6863867 

다운 원격 브로커에서 보류 중인 커밋이 있는 경우 HA 브로커 재시작 시 MissingResourceException 발생 

6867596 

브로커 재시작 후 복구된 PREPARED txn이 브로커를 다시 재시작할 경우 PREPARED 상태로 되돌아감 

6868525 

링크 수립에서 원격 브로커에 임시 대상을 전달할 때 NullPointerException 발생 

6868578 

수립된 링크가 핸드셰이크를 방해할 경우 일부 확인되지 않은 브로드캐스트/유니캐스트로 인해 링크 다운 발생 

6871612 

HA 로그 메시지 "Cant notify transaction.completion.."(트랜잭션 완료를 알릴 수 없음)보류 중인 브로커가 다운된 경우 원격 메시지를 소비할 때 

6886391 

메시지가 이미 제거된 경우 인식 메시지에서 NullPointerException 발생 

Message Queue 4.3에서 해결된 버그

다음 표는 Message Queue 4.3에서 해결된 버그를 설명합니다.

표 1–9 Message Queue 4에서 해결된 버그. 3

버그 

설명 

6634033 

클러스터 프로토콜이 imqConsumerFlowLimit 값을 클라이언트가 생성된 원격 브로커로 전파하지 않음

6713012 

클러스터의 브로커에서 사용자가 완전 삭제되는 동시에 원격 브로커가 다시 시작되면 일부 메시지가 전달되지 않을 수 있음 

6727555 

브로커 로그 메시지 "Max bytes per msg exceeded"에 실제 메시지 크기 및 전환된 max bytes per message 값이 있음

6737404 

JMX 메트릭은 대상(주제 및 대기열)에서 디스패치되었지만 사용자에게 아직 전달되지 않은 메시지 수를 제공해야 함 

6740568 

단일 트랜잭션에서 너무 많은 메시지를 사용할 경우 브로커가 예외를 표시함 

6758524 

영구 가입을 나열하는 명령(imqcmd list dur -d "foo.*")이 대상 이름에 와일드카드 문자를 허용하지 않음

6758952 

imq.portmapper.hostname=localhost를 설정하면 브로커를 클러스터에 연결할 수 없음

6758817 

imq.cluster.hostname=localhost를 설정하면(권장되지 않음) 다른 시스템의 브로커를 클러스터에 연결할 수 없음

Message Queue 4.2에서 해결된 버그

다음 표는 Message Queue 4.2에서 해결된 버그를 설명합니다.

표 1–10 Message Queue 4.2에서 해결된 버그

버그 

설명 

6581592 

설치 프로그램 또는 제거 프로그램이 텍스트 모드(installer –t)로 실행되는 경우 요약 화면에 로그/요약 파일이 포함된 디렉토리가 표시되지만 이 파일의 이름은 나열되지 않음

6585911 

설치 프로그램의 JDK 선택 화면에 설치 프로그램에 번들로 제공되며 설치 프로그램 실행에 사용되는 JRE가 잘못 포함되어 있음 

6587112 

다중 바이트 로켈에서 설치 프로그램 요약 화면에 알 수 없는 문자가 표시됨 

6587127 

응답 파일을 참조하여 설치 프로그램을 실행하는 경우(installer -a filename -s) 응답 파일이 없으면 일관성 없고 모호한 오류 메시지가 표시됨

6590969 

클라이언트 연결 인증에 DN 사용자 이름 형식이 허용됨 

6594381 

시스템에 이전 버전의 Message Queue 현지화 RPM이 있을 경우 Message Queue 4.1 현지화 RPM 설치(다국어 패키지 화면에서 "Message Queue 다국어 패키지 설치"를 선택하여 실행)에 실패함 

6599144 

Message Queue 4.2를 제거할 때 Java SE 6에서는 스플래시 화면과 제거 프로그램이 중지되고 회색의 빈 화면이 표시되지만 Java SE 5에서는 제대로 작동함  

6615741 

원래 사용자가 롤백 전에 닫힌 경우 롤백된 트랜잭션 사용자 세션에 전달된 메시지가 재전송되지 않음 

6629922 

분산 트랜잭션 처리기에서 비활성 사용자에게 메시지를 올바른 순서로 재전송하지 않음 

6635130 

대상이 메모리 또는 메시지 제한에 도달했기 때문에 브로커에서 일시 중지되었던 비지속성 메시지의 생성을 다시 시작하는 것을 생성자에 알리지 못함 

6641117 

원래 사용자가 롤백 후에 닫힌 경우 롤백된 트랜잭션 사용자 세션에 전달된 메시지가 재전송되지 않음 

6683897 

구성이 성공적으로 완료된 것 같은 경우에도 Message Queue 설치 프로그램의 요약 화면에 설치 프로그램이 일부 컴퓨터의 /dev/sterr에 쓸 수 없다는 구성 오류가 보고됩니다.

6684069 

사용자 트랜잭션을 통해 대량의 메시지가 원격 클라이언트로 전달되는 브로커 클러스터에서 트랜잭션 완결이 실패함 

6688935 

포트 매퍼 읽기 시간 초과의 기본값이 너무 작음 

6695238 

경로에 공백이 있는 위치에 설치된 브로커에 C 클라이언트 응용 프로그램으로 연결할 수 없음 

6710168 

중간에 다시 시작하지 않고 대상을 두 번 일시 중지한 경우 사용자가 더 이상 메시지를 사용하지 않음 

6710169 

JMX 작업 ConsumerManagerMonitor.getConsumerInfo에서 확인 모드에 대해 항상 SESSION_TRANSACTED를 반환함

Message Queue 4.1에서 해결된 버그

다음 표는 Message Queue 4.1에서 해결된 버그를 설명합니다.

표 1–11 Message Queue 4.1에서 해결된 버그

버그 

설명 

6381703 

메시지를 만든 브로커가 다시 시작되면 트랜잭션된 원격 메시지가 두 번 완결될 수 있음 

6388049 

완료되지 않은 분산 트랜잭션을 정리할 수 없음 

6401169 

imqcmd에 대한 완결 및 롤백 옵션이 확인을 요청하는 메시지를 표시하지 않음 

6473052 

자동 생성된 대기열의 기본값은 라운드 로빈되어야 함 (MaxNumberConsumers = -1)

6474990 

imqcmd list dst 명령에 대해 브로커 로그가 ConcurrentModificationException을 표시함

6487413 

제한 동작이 REMOVE_OLDEST 또는 REMOVE_LOWER_PRIORITY일 경우 메모리 누출이 발생함

6488340 

브로커가 회전하고 클라이언트가 응답 확인을 기다림 

6502744 

브로커가 사용 불능 메시지 대기열의 기본 제한인 1000개 메시지를 따르지 않음 

6517341 

imqReconnectEnabled 등록 정보 값에 관계 없이 클라이언트가 다시 연결될 수 있도록 하여 클라이언트를 향상된 브로커 클러스터에 연결할 경우 클라이언트 런타임의 다시 연결 논리가 향상되어야 함

6528736 

시작 도중 Windows 자동 시작 서비스(imqbrokersvc)에 충돌이 발생함

6561494 

메시지와 사용자가 한 세션을 공유한 경우 메시지가 잘못된 사용자에게 전송됨 

6567439 

PREPARED 트랜잭션에서 생성된 메시지가 브로커 다시 시작 후에 완결되면 메시지가 잘못된 순서로 전송됨

Message Queue 4.0에서 해결된 버그

다음 표는 Message Queue 4.0에서 해결된 버그를 설명합니다.

표 1–12 Message Queue 4.0에서 해결된 버그

버그 번호 

설명 

4986481 

Message Queue 3.5의 경우 자동 다시 연결 모드에서 Session.recover 호출이 정지될 수 있었음

4987325 

Session.recover 호출 후 재전송된 플래그가 재전송된 메시지에 대해 false로 설정되었음

6157073 

연결 총 수뿐 아니라 서비스의 연결 수를 포함시키기 위해 새 연결 메시지를 변경함 

6193884 

메시지에 ASCII가 아닌 문자를 사용하는 로켈의 경우 Message Queue는 알아 볼 수 없는 메시지를 syslog로 출력함 

6196233 

JMSMessageID를 사용하여 메시지를 선택할 수 없음

6251450 

클러스터 종료 도중 connectListConcurrentModificationException

6252763 

java.nio.HeapByteBuffer.putLong/Intjava.nio.BufferOverflowException

6260076 

Oracle 저장소에서 시작 후 첫 번째로 게시되는 메시지가 느림  

6260814 

JMSXUserID에서의 선택기 처리가 항상 false로 처리됨

6264003 

대기열 브라우저가 완결되지 않은 트랜잭션의 일부인 메시지를 표시함 

6271876 

사용되지 않은 메시지를 가진 사용자를 종료할 때 연결 흐름 제어가 제대로 작동하지 않음 

6279833 

Message Queue에서 두 개의 브로커가 동일한 jdbc 테이블을 사용해서는 안 됨 

6293053 

시스템의 IP 주소가 변경된 경우 저장소를 지우기 전에는(—reset store 사용) 마스터 브로커가 올바르게 시작되지 않음

6294767 

Message Queue 브로커가 여는 네트워크 소켓에 SO_REUSEADDR을 설정해야 함

6304949 

ClientID 등록 정보를 TopicConnectionFactory

6307056 

txn 로그에 성능 병목 현상 발생

6320138 

Message Queue C API에 회신 헤더로부터 대기열의 이름을 확인하는 기능이 없음  

6320325 

JDK 1.4와 JDK 1.5가 모두 설치된 경우 브로커가 JDK 1.5보다 JDK 1.4를 먼저 선택하는 경우가 있음  

6321117 

멀티 브로커 클러스터 초기화 시 java.lang.NullPointerException 발생

6330053 

가입자의 트랜잭션을 완결할 때 jms 클라이언트에서 java.lang.NoClassDefFoundError가 발생함

6340250 

C-API에서 MESSAGE 유형 지원

6351293 

Apache Derby 데이터베이스 지원 추가