이 절에는 Message Queue 3.7 UR1의 알려진 문제점이 나열되어 있습니다. 적용되는 제품 영역은 다음과 같습니다.
Java Developer Connection™ 구성원인 경우 현재 버그, 버그 상태 및 해결 방법 목록을 보려면 Java Developer Connection 웹 사이트의 Bug Parade 페이지를 참조하십시오. 새로운 버그를 보고하기 전에 이 페이지를 확인하십시오. 여기에 모든 Message Queue 버그가 나열되어 있지는 않지만 문제가 보고된 적이 있는지 여부를 확인할 수 있습니다.
http://bugs.sun.com/bugdatabase/index.jsp
Java Developer Connection 구성원의 경우 무료이지만 등록해야 합니다. Java Developer Connection 구성원이 되는 방법에 대한 자세한 내용은 Sun의 "For Developers" 웹 페이지를 참조하십시오.
새 버그를 보고하거나 기능 요청서를 제출하려면 imq-feedback@sun.com으로 메일을 보내십시오.
SSL을 사용하는 연결 서비스는 자체 서명된 서버 인증서 즉, 신뢰할 수 있는 호스트 모드만 지원하도록 제한됩니다.
HTTP 전송을 사용하는 JMS 클라이언트가 갑자기 종료되면(예: Ctrl-C 사용) 브로커는 약 1분이 경과한 후 클라이언트 연결 및 연결된 모든 자원을 릴리스합니다.
클라이언트의 다른 인스턴스가 1분 이내에 시작되어 동일한 클라이언트 아이디, 영구 가입 또는 대기열을 사용하려고 하면 "클라이언트 아이디가 이미 사용 중"이라는 예외가 발생할 수 있습니다. 이것은 실제 문제가 아니라 위에서 설명한 종료 프로세스의 부작용일 뿐입니다. 약 1분 간의 지연 후에 클라이언트가 시작되면 모든 문제가 해결됩니다.
Message Queue 3.7 UR1에서 LDAP 서버를 사용자 저장소로 사용하는 브로커 구성 예는 config.properties 파일의 주석 영역에 있으며 default.properties 파일의 LDAP 사용자 저장소 예는 주석으로 처리되었습니다.
default.properties 파일에 설정된 LDAP 사용자 저장소 속성 예의 모든 속성 값을 신뢰하는 경우 JMS 응용 프로그램 클라이언트가 JMS 연결 생성을 시도하는 동안 보안 예외가 발생합니다. 이 문제는 Message Queue 3.7 UR1로 업그레이드한 후 발생합니다.
JMS 클라이언트가 Message Queue 3.7 UR1 브로커에 연결하려고 시도하면 브로커 로그에 오류가 기록되며 JMS 클라이언트는 다음 예외를 수신합니다.
SecurityException. 20/Aug/2004:11:16:41 PDT] ERROR [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic:com.sun.messaging.jmq.auth.LoginException: [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic
해결 방법 Sun Java System Message Queue 3.7 UR1 관리 설명서의 7장, 보안 관리의 지침에 따라 브로커 등록 정보 imq.user_repository.ldap.uidattr을 설정합니다.
다음 항목은 브로커 클러스터와 관련됩니다.
이 릴리스에서는 완전히 연결된 브로커 클러스터만 지원됩니다. 즉, 클러스터에 있는 모든 브로커가 해당 클러스터 내의 다른 모든 브로커와 직접 통신해야 합니다. imqbrokerd -cluster 명령줄 인수를 사용하여 브로커를 연결하는 경우 해당 클러스터의 모든 브로커가 포함되어 있는지 확인해야 합니다.
클러스터의 일부인 브로커에 연결된 클라이언트는 현재 해당 클러스터에서 원격 브로커에 있는 대기열을 찾아보기 위해 QueueBrowser를 사용할 수 없습니다. 클라이언트는 직접 연결된 브로커에 있는 대기열의 내용만 찾아볼 수 있습니다. 그렇지만 클라이언트는 여전히 모든 대기열로 메시지를 보내거나 클러스터에 있는 모든 브로커의 대기열에서 메시지를 사용할 수 있습니다. 찾아보기만 제한을 받습니다.
브로커 클러스터에서 마스터 브로커를 사용하지 않는 경우 브로커가 저장하여 클러스터에 추가한 지속성 정보가 클러스터 내의 다른 브로커에 전파되지 않습니다.
클러스터에서 브로커에 대한 연결이 해제됨(버그 아이디 6377527)
이 버그가 발생하는 이유는 연결이 해제된 브로커 주소가 역순환 IP 주소(127.0.0.1)로 결정되기 때문입니다.
해결 방법 브로커 주소가 역순환 IP 주소로 결정되지 않도록 확인합니다.
브로커 클러스터에서 브로커는 시작되지 않은 원격 연결에 메시지 대기열을 만듦(버그 ID 4951010)
해결 방법 일단 연결이 시작되면 사용자가 메시지를 수신합니다. 사용자의 연결이 종료된 경우 메시지는 다른 사용자에게 전달됩니다.
다음 문제는 Message Queue의 관리 및 구성에 관련됩니다.
Windows 시스템의 CLASSPATH에 큰따옴표가 포함되어 있으면 imqadmin 및 imqobjmgr 유틸리티에서 오류가 발생함(버그 ID 5060769)
해결 방법 이 오류 메시지는 무시해도 됩니다. 브로커가 사용자에게 모든 오류를 알리는 작업을 올바로 수행합니다. 이 오류는 시스템의 안정성에 영향을 주지 않습니다.
Solaris 및 Windows 스크립트의 -javahome 옵션에 제공된 값에 공백이 있는 경우 해당 옵션이 작동되지 않음(버그 아이디 4683029)
javahome 옵션은 Message Queue 명령 및 유틸리티에서 사용할 대체 Java 2 호환 런타임을 지정하는 데 사용됩니다. 그러나 대체 Java 런타임의 경로 이름에는 공백이 포함되지 않아야 합니다. 다음은 공백을 포함하는 경로의 예입니다.
Windows: C:/jdk 1.4
Solaris: /work/java 1.4
해결 방법 공백이 없는 위치 또는 경로에 Java 런타임을 설치합니다.
imqQueueBrowserMaxMessagesPerRetrieve 속성은 클라이언트 런타임에서 대기열 대상의 내용을 찾아볼 때 한 번에 검색하는 메시지의 최대 수를 지정합니다. 클라이언트 응용 프로그램에는 항상 대기열의 모든 메시지가 표시됩니다. 따라서 imqQueueBrowserMaxMessagesPerRetrieve 속성은 클라이언트 런타임에 전달될 대기 메시지가 청크되는 방식(큰 메모리 청크 또는 작은 메모리 청크)에 영향을 미치지만 검색되는 전체 메시지에 영향을 미치지는 않습니다. 이 속성 값을 변경하면 성능에 영향을 미칠 수 있지만 클라이언트 응용 프로그램에서 더 많은 데이터 또는 더 적은 데이터를 얻도록 하지는 않습니다(버그 아이디 6387631).
다음 문제는 Message Queue 브로커에 영향을 미칩니다.
imqbrokerd —license 명령은 만료되었거나 중복된 정보를 표시합니다. 이 명령은 시험 사용권이 더 이상 지원되지 않더라도 이 사용권에 대한 정보를 표시하고(버그 ID 6489711) unl 사용권에 대한 중복된 정보를 표시합니다(버그 ID 6441015).
해결 방법 이러한 문제는 해결 방법이 필요하지 않은 표면적인 문제입니다.
브로커는 사용 불능 메시지 대기열에 대한 기본 제한인 1000개 메시지를 따르지 않으므로 메모리가 부족해질 때까지 사용 불능 메시지 대기열에 메시지를 계속 추가함(버그 ID 6502744)
해결 방법 사용 불능 메시지 대기열 제한을 1001이나 1000이 아닌 값으로 재설정합니다.
HTTPS createQueueConnection이 Windows 2000에서 가끔 예외를 발생시킴(버그 ID 4953348)
해결 방법 연결을 재시도합니다.
Ctrl-C를 사용하여 브로커를 종료하면 저장소를 닫은 후 트랜잭션이 정리될 수 있음(버그 ID 4934446)
메시지 또는 트랜잭션이 처리되는 동안 브로커가 종료되면 브로커에서 "저장소가 닫힌 후에 저장소 메소드가 액세스되었습니다." 오류가 표시될 수 있습니다.
해결 방법 이 오류 메시지는 무시해도 됩니다. 브로커가 사용자에게 모든 오류를 알리는 작업을 올바로 수행합니다. 이 오류는 시스템의 안정성에 영향을 주지 않습니다.
영구 저장소가 너무 많은 대상을 열면 브로커에 액세스할 수 없게 됨(버그 ID 4953354)
해결 방법 이 상황은 브로커가 시스템 파일 열기 설명자 제한에 도달하면 발생합니다. Solaris와 Linux에서 ulimit 명령을 사용하여 파일 설명자 제한을 늘립니다.
대상이 삭제되면 사용자와의 연결이 끊어짐(버그 ID 5060787)
대상이 삭제되면 활성 사용자와의 연결이 끊어집니다. 사용자와의 연결이 끊어진 후에는 대상이 다시 생성된 후에도 더 이상 메시지를 받을 수 없습니다.
해결 방법 이 문제는 해결 방법이 없습니다.
JMSMessageID를 사용하는 메시지 선택이 작동하지 않음(버그 ID 6196233)
해결 방법 다음 표현식에서 선택기를 변경합니다.
JMSMessageID = "ID:message-id-string"
다음 표현식으로 변경
JMSMessageID IN (’ID:message-id-string’, ’message-id-string’)
Message Queue 대기열 브라우저에 완결되지 않은 메시지가 표시됨(버그 아이디 6264003)
대기열의 내용을 찾을 때 트랜잭션에서 생성되었지만 아직 완결되지 않은 메시지가 대기열 브라우저 열거에 나타날 수 있습니다.
해결 방법 이 문제는 해결 방법이 없습니다.
완결 도중에 브로커가 중단된 후 메시지를 사용하지 못할 수 있음(버그 ID 6467874)
매우 드문 경우이기는 하지만 브로커 중단 도중 트랜잭션의 메시지를 사용자가 사용하지 못할 수 있습니다. 특히 완결 처리 도중 작은 창이 있는데 이 창으로 인해 메시지가 영구 저장소에 묶여버릴 수 있습니다. 이 경우 중단 후에 브로커 시작 시에 다음 메시지가 표시됩니다.
[06/Sep/2006:10:11:11 PDT] ERROR [B2085]: 대상 q0 [Queue] 로드가 실패했습니다. 해당 대상에 저장된 메시지는 사용할 수 없습니다.: > com.sun.messaging.jmq.jmsserver.util.BrokerException: 메시지 8-129.145.180.87(b8:8b:26:15:41:26)-38998-1157562551217에 관련된 확인 목록이 이미 있습니다.
해결 방법 이 문제는 해결 방법이 없습니다.
Message Queue 3.7 UR1의 베타 릴리스에는 독립 실행형 제품이 없습니다. 따라서 이 릴리스의 경우 Java Enterprise System 설치 프로그램을 사용하여 Message Queue를 설치해야 합니다. 지침은 Sun Java System 설치 설명서를 참조하십시오.