Sun Java System Application Server 9.1 릴리스 노트

3장 알려진 문제점 및 제한 사항

이 장에서는 Sun Java System Application Server 9.1 소프트웨어의 알려진 문제점과 해결 방법에 대해 설명합니다. 문제를 설명하는 부분에서 특정 플랫폼을 언급하지 않는 경우에는 해당 문제가 모든 플랫폼에 적용됩니다. 이 정보는 다음 내용으로 구성되어 있습니다.

관리

이 절에서는 관리와 관련된 알려진 문제점과 해결 방법을 설명합니다.

domain1이 없는 경우 package-appclient 스크립트가 작동하지 않음(6171458)

설명

기본적으로 $INSTALL/lib/package-appclient.xml에는 asenv.conf 파일이 가리키는 domain1AS_ACC_CONFIG 변수를 위한 하드 코드된 값이 있습니다. domain1을 삭제하고 새 도메인을 만든 경우 AS_ACC_CONFIG 변수가 새 도메인 이름으로 업데이트되지 않아 package-appclient 스크립트의 실패 요인이 됩니다.

해결 방법

다음 중 한 가지를 수행합니다.

  1. domain1을 그대로 두고 해당 위치에 다른 도메인을 만듭니다.

  2. domain1을 제거하고 $INSTALL/lib/package-appclient.xml에서 domain1의 하드 코드된 값을 새 도메인 이름으로 변경합니다.

domain1이 없는 경우에는 새 도메인을 만들 때마다 이 작업을 수행해야 합니다.

백업된 도메인을 다른 이름으로 복원할 수 없음(6196993)

설명

asadmin restore-domain 명령은 도메인 이름 변경 옵션을 제공하지만 원래 이름과 다른 이름을 사용하여 도메인을 복원할 수 없기 때문에 backup-domain 명령과 restore-domain 명령을 사용하여 동일한 Application Server 설치에서 도메인 미러링을 수행할 수 없습니다. 백업한 도메인의 이름을 변경하는 데 성공한 것처럼 보이지만 이름을 변경한 도메인을 시작하려고 시도하면 도메인 구성의 항목이 변경되지 않은 상태에서 startservstopserv가 원래 도메인 이름을 사용하여 경로를 설정하기 때문에 실패하게 됩니다.

해결 방법

restore-domain 명령에 사용된 도메인 이름이 원래 backup-domain 명령에 사용된 이름과 같아야 합니다. Application Server 8.1의 backup-domainrestore-domain 명령은 같은 시스템의 동일한 도메인을 백업하고 복원하는 경우에만 사용할 수 있습니다.

추가 JMX 에이전트를 사용하여 Application Server를 시작하는 기능이 지원되지 않음(6200011)

설명

J2SE 1.4.x, 5.0 이상을 Application Server에서 구성할 수 있습니다. J2SE 5.0 플랫폼의 중요한 기능은 JMX 에이전트를 시작하는 능력입니다. 이 기능은 서버를 시작할 때 시스템 등록 정보를 명시적으로 설정하면 활성화됩니다.

예를 들면 다음과 같습니다.


name="com.sun.management.jmxremote" value="true"
name="com.sun.management.jmxremote.port" value="9999"
name="com.sun.management.jmxremote.authenticate" value="false"
name="com.sun.management.jmxremote.ssl" value="false"

JMX 등록 정보를 구성하고 서버를 시작한 후 새 jmx-connector 서버가 Application Server VM 내에서 시작됩니다. 이로 인한 원하지 않는 부작용으로 관리 기능이 역으로 영향을 받고 Application Server 관리 콘솔과 명령줄 인터페이스에서 예기치 못한 결과가 발생할 수 있습니다. 문제는 내장된 jmx-connector 서버와 새 jmx-connector 서버 간에 충돌이 발생하는 것입니다.

해결 방법

jconsole(또는 다른 JMX-compliant 클라이언트)을 사용할 경우 Application Server 시작과 함께 시작되는 표준 JMX Connector Server를 다시 사용할 것을 고려합니다.

서버를 시작하면 아래에서 설명한 것과 유사한 행이 server.log에 나타납니다. 이곳에 지정된 JMXService URL에 연결하여 자격 증명을 성공적으로 제공한 후 동일한 관리/구성 작업을 수행할 수 있습니다. 예를 들면 다음과 같습니다.


[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1|
javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: 
Here is the JMXServiceURL for the JMXConnectorServer: 
[service:jmx:rmi:///jndi/rmi://hostname:8686/management/
rmi-jmx-connector]. This is where the remote administrative 
clients should connect using the JSR 160 JMX Connectors.|#]

자세한 내용은 Sun Java System Application Server 9.1 Administration Guide를 참조하십시오.

UNIX에서 Application Server 시작 및 중지 스크립트의 실행 권한이 지나치게 제한적임(6206176)

설명

사용자 "A"로 로그인하여 asadmin restore-domain 명령을 실행하면 스크립트의 사용자 권한이 744(rwxr--r--)로 종료됩니다. 이후에 사용자 "B"로 도메인을 시작하거나 중지하려고 시도하면 "B"가 루트더라도 "A"에 대해서만 스크립트를 실행할 수 있기 때문에 실패하게 됩니다.

해결 방법

스크립트의 사용자 권한을 다음과 같이 변경합니다.


chmod 755 appserv/domains/domain-name/bin/*

웹 서비스의 종점 URL이 있는 로드 밸런서 구성 파일이 만들어지지 않음(6236544, 6275436)

설명

웹 서비스 URL을 내보내는 EJB 모듈이 있는 응용 프로그램을 사용하여 로드 밸런서 구성을 설정하면 loadbalancer.xml 결과 파일에 웹 서비스의 컨텍스트 루트가 없게 됩니다.

해결 방법

  1. loadbalancer.xml 파일을 편집하여 누락된 웹 모듈을 다음과 같이 추가합니다.


    <web-module context-root="context-root-name"
    disable-timeout-in-minutes="30" enabled="true"/>
  2. context-root-name 값을 EJB로 노출된 웹 서비스의 컨텍스트 루트 이름과 바꿉니다.

sun-appserv-admin을 사용하여 Application Server를 다시 시작하면 LoginException 오류 발생(6288893)

해결 방법

  1. 기존 <as_install> /bin/asant 스크립트 이름을 asant.bak으로 변경합니다.

  2. <as_install> /lib/install/templates/ee(SE/EE 버전용)에서 asant.template 파일을 <as_install>/bin/ 디렉토리에 복사하고 asant 파일 이름을 변경합니다.

  3. 새로 복사된 <as_install> /bin/asant 스크립트를 편집하여 %CONFIG_HOME% 토큰을 <as_install>/config로 바꿉니다.

  4. 원본 asant.bak 파일을 수동으로 변경했다면 이러한 변경 사항을 모두 새 asant 스크립트로 병합합니다.

.asadmintruststore 파일이 Application Server 설명서에 설명되어 있지 않음(6315957)

설명

Application Server 설명서에 .asadmintruststore 파일에 대한 설명이 없습니다. 이 파일이 서버 관리자의 디렉토리에 없으면 서버에 호스트된 일정 응용 프로그램을 업그레이드할 때 심각한 버그가 발생할 수 있습니다.

해결 방법

JMS 브로커에 도달하면 시간 제한 때문에 클러스터링된 인스턴스가 시작되지 않음(6523663)

설명

Application Server 클러스터 인스턴스의 기본 MQ 통합 모드는 LOCAL입니다. Application Server가 긴("not short") 위치(PATH)에 설치된 경우 클러스터 인스턴스가 시작되면 imqbrokerscv.exe가 충돌됩니다. 문제는 imqbrokersvc의 메모리 할당 문제입니다.

해결 방법

클러스터 인스턴스의 JMS 서비스 유형을 기본 LOCAL에서 REMOTE로 변경해야 합니다. 이 구성에서 모든 인스턴스는 다시 DAS 브로커를 가리킵니다. 다음 지침에 따라 REMOTE 모드로 클러스터를 구성합니다.


주 –

REMOTE 모드를 사용하면 모든 인스턴스가 한 브로커(DAS)를 사용하기 때문에 Application Server 클러스터가 시작될 때 브로커 클러스터가 만들어지지 않습니다. 자세한 내용은 http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt에 있는 한 페이지짜리 설명서의 4.1절, iii부에 있는 "Auto-clustering"을 참조하십시오. 위의 기능은 사용할 수 없습니다.


Procedure명령줄 사용

시작하기 전에

환경에 따라 포트 및 비밀번호 파일을 수정합니다. 아래의 지침에서 클러스터 이름은 racluster, DAS 관리 포트는 5858, DAS JMS 포트는 7676입니다.

  1. JMS 유형을 REMOTE로 변경하여 클러스터 구성을 수정합니다.


    $AS91_HOME/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file racluster.jms-service.type=REMOTE
  2. DAS JMS 호스트에 해당되는 JMS 호스트를 만듭니다.


    $AS91_HOME/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file --target racluster --mqhost localhost --mqport 7676 \
    --mquser admin --mqpassword admin dashost
  3. 기본 JMS 호스트를 이전 단계에서 만든 DAS JMS 호스트로 설정합니다.


    $AS91_HOME/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file racluster.jms-service.default-jms-host=dashost

Procedure관리 GUI 사용

  1. 구성->cluster_name-config->Java Message Service->JMS 호스트로 이동합니다.

  2. 새로 만들기를 눌러 새 JMS 호스트를 만들고 이름을 dashost로 지정합니다.

  3. DAS의 JMS 서비스에 해당되는 구성 설정을 입력합니다. 기본값은 다음과 같습니다.

    • 호스트 이름: localhost

    • 포트: 7676

    • 관리자: admin

    • 비밀번호: admin

    이 설정을 DAS JMS 서비스에 맞게 수정합니다.

  4. Java Message Service 탭으로 돌아와 JMS 서비스 유형을 REMOTE로 변경합니다(기본값: LOCAL).

  5. default-jms-host 드롭다운 목록에서 dashost를 선택합니다.

  6. 변경 사항을 저장한 다음 노드 에이전트 또는 클러스터를 시작합니다.

Netscape 8.1.3, Mozilla 1.7 및 Safari 2.0.4 브라우저에서 jmaki 차트를 표시할 수 없음(6543014)

설명

지원되지 않는 브라우저를 사용하여 로그 통계 모니터링 페이지의 차트를 표시하려고 하면 다음 오류가 발생할 수 있습니다.


Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11
Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \
line/component.js (line:5437).
Message: area.initialize is not a function

해결 방법

지원되는 브라우저를 사용합니다. Application Server 9.1에서 지원되는 브라우저의 목록은 브라우저를 참조하십시오.

각 AS 주요 릴리스에서 기본 포트가 변경됨(6566481)

설명

지난 세 번의 주요 Application Server 릴리스 각각에서 기본 관리 포트가 변경되었습니다. 7.x, 8. x 및 9.x의 기본 관리 포트는 다음과 같습니다.

해결 방법

이 문제는 버그는 아니지만 알아 두어야 하는 사항입니다. 기본 관리 포트는 권장 사항일 뿐입니다. 이후 Application Server 릴리스에서는 기본 4848 포트를 유지할 예정입니다.

Apache 및 로드 밸런서 플러그인

이 절에서는 Apache Web Server 및 로드 밸런서 플러그인과 관련된 알려진 문제점과 해결 방법을 설명합니다.

고가용성 관리 설명서에서 Apache와 함께 openssl을 사용하는 경우에 대한 지침이 올바르지 않음(6306784)

openssl을 컴파일하고 빌드할 때 다음 명령을 실행합니다.

cd openssl-0.9.7e

config

make

또한 Apache 1.3의 경우 mod_ssl 소스의 디렉토리 이름은 사용되는 Apache 릴리스에 따라 달라집니다. 예를 들어 Apache 1.3.33에서 이름은 mod_ssl-2.8.22-1.3.33입니다.

고가용성 관리 설명서에 Apache 2.0용 인증서를 사용하는 경우에 대한 지침이 포함되어 있지 않음(6307976)

Apache 보안을 실행하기 위해서는 인증서를 사용해야 합니다. 인증 기관에서 인증서를 얻는 방법은 modssl FAQ에서 인증서에 대한 정보를 참조하십시오.

Apache Web Server를 루트로 시작해야 함(6308021)

Application Server가 루트에서 설치되었을 경우 Apache Web Server를 루트로 시작해야 합니다(Solaris만 해당). Java Enterprise System 설치는 루트로 설치됩니다. Apache 2.0의 경우 Apache는 루트로 시작한 후 사용자가 지정하는 다른 사용자로 전환되어 실행됩니다. /conf/httpd.conf 파일에서 해당 사용자를 지정합니다. 루트로 시작하려면 대부분의 시스템에서 httpd.conf 파일을 편집하여 정확한 그룹을 지정해야 합니다. 다음 명령줄을

Group #-1

아래와 같이 바꿉니다.

Group nobody

사용자/그룹 사용에 대한 자세한 내용은 httpd.conf 파일에 포함되어 있습니다.

응용 프로그램 클라이언트

이 절에서는 응용 프로그램 클라이언트와 관련된 알려진 문제점과 해결 방법을 설명합니다.

Application Client Archive에 패키지로 포함된 라이브러리 JAR이 MANIFEST 파일을 덮어씀(6193556)

설명

클라이언트 JAR 내에 최상위 JAR 파일이 있는 경우(이 경우에는 reporter.jar) 클라이언트 JAR을 배포할 때 해당 JAR의 MANIFEST 파일이 클라이언트 JAR의 MANIFEST 파일을 덮어씁니다.

해결 방법

현재는 해결 방법이 없습니다.

ACC에서 항상 localhost:3700에 연결하려 함(6527987)

설명

응용 프로그램 클라이언트에서는 항상 localhost:3700에 연결하려 합니다. 문제는 클라이언트 코드를 호출하려면 몇 가지 시스템 등록 정보를 읽어야 한다는 것입니다.

해결 방법

다음을 시스템 등록 정보로 설정합니다( JAVA_CMD에서 -D). 응용 프로그램 코드에서 다음을 설정하지 마십시오.


org.omg.CORBA.ORBInitialHost = server_instance_host
org.omg.CORBA.ORBInitialPort = server_instance_port

sunpkcs11.jar이 없어 도메인을 시작할 수 없음(6571044)

설명

64비트 Linux에서 실행하는 경우 도메인을 시작하면 다음 예외가 발생합니다. jdk1.5.0_11/jre/lib/ext/ 아래에 sunpkcs11.jar이 없는 것이 문제입니다.

해결 방법

64비트 Linux에서 알려진 JDK 버그이며, JDK 1.5.0_13에서 수정될 예정입니다.

ASQuickStartupSocketChannel.keyFor()를 중단하여 SelectionKey 대신 null이 반환됨(이슈 트랙커 3027)

설명

SocketChannel이 여러 선택기에 등록되어 있는 경우 socketChannel.keyFor(lastRegisteredSelector)를 수행하면 SelectionKey 대신 null이 반환됩니다.

해결 방법

JDK 버그 6562829와 관련된 문제이며 6.0 U3에서 수정될 예정입니다. keyFor API가 호출되기 전에 선택기 래핑을 해제하는 해결 방법이 Application Server 9.1에 포함되었습니다. JDK 버그가 수정될 때까지는 이 방법을 사용하여 keyFor를 성공시킬 수 있습니다.

번들로 제공되는 Sun JDBC 드라이버

이 절에서는 번들로 제공되는 Sun JDBC 드라이버와 관련된 알려진 문제점과 해결 방법을 설명합니다.

PreparedStatement 오류(6170432)

설명 1

응용 프로그램에서 한 트랜잭션에서 3000개 이상의 PreparedStatement 개체를 생성하는 경우 DB2에서 다음 오류가 발생할 수 있습니다.

[sunm][DB2 JDBC Driver] No more available statements. Please recreate your package with a larger dynamicSections value.

해결 방법 1

연결 풀 정의에 다음 등록 정보를 추가하여 드라이버에서 더 큰 동적 섹션 값으로 DB2 패키지를 다시 바인드하도록 합니다.

createDefaultPackage=true replacePackage=true dynamicSections=1000

연결 풀 구성에 대한 자세한 내용은 Sun Java System Application Server 9.1 Administration Guide를 참조하십시오.

설명 2

위의 PrepardStatement 오류와 관련하여 발생할 수 있는 다른 오류 메시지는 다음과 같습니다.

[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.

해결 방법 2

DB2 서버 구성 매개 변수 APPLHEAPSZ를 증가시킵니다. 권장 값은 4096입니다.

설명 3

TRANSACTION_SERIALIZABLE 격리 수준 응용 프로그램에서 TRANSACTION_SERIALIZABLE 격리 수준을 사용하고 위에 제시한 매개 변수 중 하나를 사용하면 연결하는 동안 응용 프로그램이 중단될 수 있습니다.

해결 방법 3

연결을 위해 바람직한 격리 수준을 설정하려면 상응하는 연결 풀을 같은 격리 수준에 만들어야 합니다. 지침은 Sun Java System Application Server 9.1 Administration Guide를 참조하십시오.

시스템을 재부트하거나 Application Server를 시작한 후 Java DB가 시작되지 않음(6515124)

설명

호스트 시스템 또는 Solaris 영역을 재부트하거나 Application Server를 시작한 후에 번들로 제공된 Java DB 데이터베이스가 자동으로 다시 시작되지 않습니다. 이 문제는 버그가 아니며 번들로 제공되는 응용 프로그램이나 타사 응용 프로그램에서 일어날 수 있는 동작입니다. 문제는 Application Server 인스턴스보다 먼저 Java DB를 시작해야 한다는 것입니다.

해결 방법

호스트 시스템이나 Solaris 영역을 재부트한 후에는Application Server를 시작하기 전에 Java DB를 시작해야 합니다. 예를 들면 다음과 같습니다.


/opt/SUNWappserver/appserver/bin/asadmin start-database

asadmin 명령 옵션에 대한 자세한 내용은 Sun Java System Application Server 9.1 Quick Start Guide Application Server Administration Tools를 참조하십시오.

설명서

이 절에서는 설명서와 관련된 알려진 문제점과 해결 방법을 설명합니다.

Javadoc 불일치(다양한 ID)

몇 가지 AMX 인터페이스와 메소드를 위한 Javadoc가 누락되었거나 잘못되어 있습니다.

번들로 제공되는 ANT에서 java.lang.NoClassDefFoundError 발생(6265624)

설명

다음 예외는 스레드 "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher에서 발생합니다.

해결 방법

Application Server 외부의 항목에 대해 번들로 제공되는 ANT를 사용하는 것은 좋지 않습니다.

ID:

6615557

요약:

현지화된 온라인 도움말의 '목차' 탭에서 세 페이지가 누락되었음

설명:

현지화된 온라인 도움말의 '목차' 탭에서 다음 세 페이지가 누락되었습니다.

- 자원 -> JavaMail 세션-> JavaMail 세션 대상 관리

- 자원 -> 커넥터 -> 연결 풀 등록 정보를 편집하는 방법

- 커넥터 -> 연결 풀 등록 정보 편집 -> 보안 맵 관리

해결 방법:

이들 페이지의 경우 영문 온라인 도움말을 참조하십시오.

고가용성

이 절에서는 고가용성 데이터베이스(HADB)와 관련된 알려진 문제점과 해결 방법을 설명합니다.

이중 네트워크에 HADB 구성(ID 없음)

Solaris SPARC에서는 두 개의 서브넷에 이중 네트워크와 함께 구성된 HADB가 제대로 작동합니다. 그러나, 운영 체제 또는 일부 하드웨어 플랫폼의 네트워크 드라이버 문제 때문에 Solaris x86과 Linux 플랫폼에서는 이중 네트워크를 제대로 처리할 수 없는 경우가 있는 것으로 확인되었습니다. 이로 인해 HADB에 발생하는 문제는 다음과 같습니다.

HADB 데이터베이스 만들기 실패(ID 없음)

설명

사용할 수 있는 공유 메모리 세그먼트가 너무 적다는 뜻의 다음 오류로 새 데이터베이스 생성에 실패할 수 있습니다.

HADB-E-21054:System resource is unavailable:HADB-S-05512:Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message:Too many open files.

해결 방법

공유 메모리가 구성되었는지와 구성이 작동하는지를 확인합니다. 특히, Solaris 8에서는 파일 /etc/system을 검사하고 변수 shmsys:의 값이 다음과 같은지 확인합니다. shminfo_shmseg는 적어도 호스트당 노드 수의 6배입니다.

hadbm set에서 자원의 가용성(디스크 및 메모리 공간)을 검사하지 않음(5091280)

설명

hadbm set를 사용하여 장치 또는 버퍼 크기를 증가시키면 관리 시스템에서 데이터베이스를 만들거나 노드를 추가할 때 자원 가용성을 확인하지만 장치나 주 메모리 버퍼 크기가 변경될 때는 충분한 자원이 있는지 확인하지 않습니다.

해결 방법

devicesize 또는 buffersize 구성 속성을 증가시키기 전에 모든 호스트에서 사용 가능 디스크와 메모리 공간이 충분한지 확인합니다.

packagepath에 대해 이기종 경로가 지원되지 않음(5091349)

설명

같은 이름의 동일한 소프트웨어 패키지를 서로 다른 호스트의 여러 위치에 등록할 수 없습니다. 예를 들면 다음과 같습니다.


hadbm registerpackage test --packagepath=/var/install1 --hosts europa11
Package successfully registered.
hadbm registerpackage test --packagepath=/var/install2 --hosts europa12
hadbm:Error 22171: A software package has already been registered with 
the package name test.

해결 방법

HADB는 데이터베이스 클러스터의 여러 노드에 걸친 이기종 경로를 지원하지 않습니다. HADB 서버 설치 디렉토리(--packagepath)가 모든 참여 호스트에서 동일한지 확인합니다.

createdomain이 실패할 수 있음(6173886, 6253132)

설명

네트워크 인터페이스가 여러 개인 호스트에 관리 에이전트를 실행하면 createdomain 명령은 모든 네트워크 인터페이스가 동일한 서브넷에 있지 않을 경우 실패하게 됩니다.


hadbm:Error 22020: The management agents could not establish a 
domain, please check that the hosts can communicate with UDP multicast.

관리 에이전트(다르게 구성되지 않은 경우)는 UDP 멀티캐스트에 대해 "첫 번째" 인터페이스를 사용합니다("첫 번째"는 java.net.NetworkInterface.getNetworkInterfaces()의 결과로 정의됨).

해결 방법

최고의 해결 방법은 관리 에이전트에 사용할 서브넷을 요청하는 것입니다(구성 파일에서 ma.server.mainternal.interfaces 설정. 예: ma.server.mainternal.interfaces=10.11.100.0). 서브넷 사이의 라우터를 구성하여 멀티캐스트 패킷을 라우팅할 수도 있습니다(관리 에이전트는 멀티캐스트 주소 228.8.8.8을 사용).

관리 에이전트의 새 구성으로 재시도하기 전에 관리 에이전트 리포지토리를 정리해야 합니다. 도메인의 모든 에이전트를 중단하고 리포지토리 디렉토리에서 모든 파일과 디렉토리를 삭제합니다(관리 에이전트 구성 파일에 repository.dr.path로 표시). 새 구성 파일을 가진 에이전트를 다시 시작하기 전에 모든 호스트에서 이를 수행해야 합니다.

HADB 시작, 중지 및 재구성이 실패하거나 정지될 수 있음(6230792, 6230415)

설명

Solaris 10 Operating System에서 hadbm 명령을 사용하여 HADB를 시작하거나 중단 또는 재구성하는 것이 다음 오류 중 하나로 실패하거나 중단될 수 있습니다.


hadbm:Error 22009: The command issued had no progress in the last 
300 seconds.
HADB-E-21070: The operation did not complete within the time limit, 
but has not been cancelled and may complete at a later time.

clu_noman_srv 프로세스가 사용하는 파일(nomandevice)에 일관성 없는 읽기/쓰기가 있을 경우 이렇게 됩니다. HADB 내역 파일에서 다음 메시지를 찾으면 이 문제가 있다는 뜻입니다.


n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
does not respond.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 
104.537454 sec.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
did not start.

해결 방법

문제가 재현되지는 않았으므로 다음 해결 방법은 검증된 내용이 아닙니다. 그러나 영향을 받은 노드에 대해 이 명령을 실행하면 문제가 해결됩니다.


hadbm restartnode --level=clear nodeno dbname

노드에 대한 모든 장치가 다시 초기화됩니다. 다시 초기화하기 전에 노드를 중단시켜야 할 수도 있습니다.

"IPV6_MULTICAST_IF failed" 예외와 함께 관리 에이전트가 종료됨(6232140)

설명

NIC 카드가 여러 개 설치된 Solaris 8을 실행 중인 호스트에서 시작할 경우 IPv6과 IPv4를 사용할 수 있는 상태의 카드들이 혼합되어 있다면 관리 에이전트는 "IPV6_MULTICAST_IF failed" 예외로 종료될 수 있습니다.

해결 방법

JAVA_OPTIONS 환경 변수를 -Djava.net.preferIPv4Stack=true로 설정합니다. 예를 들면 다음과 같습니다.


export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

또는 이러한 문제가 없는 Solaris 9 이상을 사용하십시오.

clu_trans_srv를 인터럽트할 수 없음(6249685)

설명

비동기 I/O를 수행할 때 Red Hat Enterprise Linux 3.0의 64비트 버전에 clu_trans_srv 프로세스를 무중단 모드로 만드는 버그가 있습니다. 즉, kill -9가 동작하지 않아 운영 체제를 재부팅해야 합니다.

해결 방법

Red Hat Enterprise Linux 3.0의 32비트 버전을 사용합니다.

hadbm에서 대문자가 포함된 비밀번호를 지원하지 않음(6262824)

설명

암호가 hadb에 저장될 때 대문자로 된 암호는 소문자로 변환됩니다.

해결 방법

암호에 대문자를 사용하지 마십시오.

HADB 버전 4.4.2.5에서 HADB 버전 4.4.1.7로 다운그레이드하면 다른 오류 코드가 표시되면서 관리 에이전트가 실패함(6265419)

설명

이전 HADB 버전으로 다운그레이드하면 다른 오류 코드가 표시되면서 관리 에이전트는 실패합니다.

해결 방법

HADB 데이터베이스를 다운그레이드할 수 있지만, 리포지토리 객체가 변경되었을 경우 관리 에이전트는 다운그레이드할 수 없습니다. 다운그레이드 후에는 최신 HADB 버전에서 관리 에이전트를 사용해야 합니다.

설치/제거와 symlink 유지(6271063)

설명

HADB c 패키지(Solaris: SUNWhadbc, Linux: sun-hadb-c) 버전 <m.n.u-p> 설치/제거와 관련하여 symlink /opt/SUNWhadb/<m>은 일단 존재하는 경우 수정되지 않습니다. 따라서 연결이 끊어진 symlink가 있을 수 있습니다.

해결 방법

설치 전이나 제거 후에 사용 중이지 않은 경우 symlink를 삭제합니다.

전역 및 로컬 영역의 관리 에이전트가 방해될 수 있음(6273681)

설명

Solaris 10에서는 전역 영역에서 ma-initd 스크립트를 사용하여 관리 에이전트를 중지할 경우 로컬 영역에서도 관리 에이전트가 중지됩니다.

해결 방법

전역 및 로컬 영역 모두에 관리 에이전트를 설치하지 마십시오.

세션 개체가 시간 초과되어 관리 에이전트에서 삭제된 경우 hadbm/ma에서 보다 적절한 오류 메시지를 표시해야 함(6275103)

설명

가끔 서버의 자원 충돌 문제로 인해 관리 클라이언트의 연결이 끊어질 수 있으며, 다시 연결하면 "hadbm:Error 22184:A password is required to connect to the management agent" 오류 메시지가 반환됩니다.

해결 방법

가끔 서버의 자원 충돌 문제로 인해 관리 클라이언트의 연결이 끊어질 수 있으며, 다시 연결하면 "hadbm:Error 22184:A password is required to connect to the management agent" 오류 메시지가 반환됩니다.

서버에 자원 문제가 있다면 자원을 추가하는 등 적절한 조치를 취한 다음 다시 시도해보십시오.

루트가 아닌 사용자는 HADB를 관리할 수 없음(6275319)

설명

Java Enterprise System에서 (루트로) 설치하면 루트가 아닌 사용자는 HADB를 관리할 수 없습니다.

해결 방법

항상 루트로 로그인하여 HADB를 관리합니다.

관리 에이전트에서 특수 용도의 인터페이스를 사용해서는 안 됨(6293912)

설명

0.0.0.0과 같은 IP 주소를 가진 특수 용도의 인터페이스는 관리 에이전트에서 HADB 노드에 사용할 유효한 인터페이스로 등록되지 않아야 합니다. 이러한 인터페이스를 등록하면 IP 주소 대신 호스트 이름을 사용하여 hadbm create 명령을 호출하는 사용자에 의해 HADB 노드가 이런 인터페이스에 설정되었을 경우 문제가 생길 수 있습니다. 그러면 노드가 통신할 수 없게 되어 create 명령이 중단될 수 있습니다.

해결 방법

인터페이스가 여러 개 있는 호스트에서 hadbm create를 사용할 때 항상 DDN 표기 형식을 사용하여 IP 주소를 명확하게 지정해야 합니다.

Windows에서 리어셈블리 오류(6291562)

설명

특정 구성과 로드의 Windows 플랫폼에서 운영 체제에 많은 리어셈블리 오류가 있을 수 있습니다. 여러 테이블에 대한 스캔을 동시에 실행할 때(select *) 20개가 넘는 노드로 된 구성에 문제가 있었습니다. 트랜잭션이 자주 중단되거나 복구를 완료하는 데 시간이 오래 걸리는 등의 징후가 있거나 시스템의 여러 부분에서 자주 시간 초과가 일어날 수 있습니다.

해결 방법

이 문제를 해결하기 위해 Windows 레지스트리 변수 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 를 기본값인 100보다 높게 설정할 수 있습니다. 이 값을 0x1000 ( 4096)까지 증가시키는 게 좋습니다. 자세한 내용은 Microsoft 지원 페이지에서 811003 자료를 참조하십시오.

브라우저에 경로가 /인 쿠키가 또 있는 경우 세션 상태가 유지되지 않음(6553415)

설명

경로가 "/"인 쿠키는 메모리 내 복제를 지속성 유형으로 사용하는 "/"가 아닌 다른 컨텍스트 루트에 배포된 고가용성 웹 응용 프로그램의 쿠키를 방해하기 때문에 고가용성 웹 응용 프로그램이 HTTP 세션 상태를 유지할 수 없습니다. 이 문제가 발생할 수 있는 일반적인 시나리오는 동일한 브라우저를 사용하여 관리 GUI("/"에 배포)와 고가용성 웹 응용 프로그램 모두에 액세스할 때입니다.

해결 방법

다른 브라우저를 사용하여 "/"에 배포된 웹 응용 프로그램에 액세스합니다.

LB가 IIS 6에서 작동하지 않음. SASL32.DLL ZLIB.DLL<appserver-install> /lib에 없음(6572184)

설명

SASL32.DLLZLIB.DLL은 로드 밸런서가 Windows IIS 6에서 작동하는 데 필요한 파일입니다. 이 파일이 현재 <appsrver-install> /lib에 없습니다.

해결 방법

두 DLL 파일을 수동으로 <appserver-install> /lib에 복사합니다. 이 파일은 다음 위치에서 다운로드할 수 있습니다.


http://download.java.net/javaee5/external/<OS>/aslb/jars/aslb-9.1-MS4-b5.jar

여기서 <OS>는 원하는 플랫폼을 나타내며 다음 값 중 하나가 될 수 있습니다.

전역 영역에서의 DAS 만들기/시작 및 HA 패키지 전파 문제(6573511)

설명

고가용성 패키지를 사용하여 전역 영역에 Application Server를 설치 또는 제거할 때 두 가지 문제가 발생합니다.

  1. 하나는 HA 패키지가 모든 영역에 설치되는 문제입니다.

  2. 다른 하나는 제거를 수행할 때 HA, MQ, JDK 패키지가 모든 영역에서 제거되는 문제입니다.

루트 로컬 영역에서 설치 또는 제거를 수행하는 경우에는 이 문제가 발생하지 않습니다.

해결 방법

전역 영역이 아닌 로컬 루트 영역에서 설치 및 제거를 수행합니다.

" /"에 배포된 고가용성 웹 응용 프로그램에서 메모리 내 복제 HTTP 세션을 다시 시작할 수 없음(이슈 트랙커 2972)

설명

"/"에 배포된 고가용성 웹 응용 프로그램이 메모리 내 복제를 지속성 유형으로 사용하는 경우에는 HTTP 세션을 유지할 수 없습니다.

해결 방법

메모리 내 복제를 지속성 유형으로 사용하는 고가용성 웹 응용 프로그램을 "/"가 아닌 다른 컨텍스트 루트에 배포합니다. "/"에서 이러한 웹 응용 프로그램을 사용할 수 있게 하려면 웹 응용 프로그램을 해당 프로그램이 배포된 가상 서버의 기본 웹 모듈로 지정할 수 있습니다.

AS LB 설치 프로그램에서 /usr/lib/mps 경로를 apachectl LD_LIBRARY_PATH에 두지 않아 Apache SSL을 시작할 수 없음(6591878)

설명

Solaris에 Apache용 Application Server 로드 밸런서를 설치하는 동안 설치 프로그램에서는 apachectl 스크립트의 LD_LIBRARY_PATH를 업데이트합니다. 하지만 설치 프로그램에서는 /usr/lib/mps 경로를 올바르게 쓰지 않습니다. Solaris에서 LD_LIBRARY_PATH에 이 경로가 없으면 Apache 보안 인스턴스가 시작되지 않습니다.

해결 방법

이 문제는 Solaris 플랫폼에서만 발생합니다. 이 문제를 해결하려면 /opt/SUNWappserver/appserver/lib/lbplugin/libLD_LIBRARY_PATH에 추가하십시오.

인스턴스/클러스터의 활성화/비활성화 LB에 올바른 상태가 표시되어야 함(6595113)

설명

domain.xml에 저장된 내용과 관계 없이 클러스터링된/인스턴스 일반 페이지에서 로드 균형 활성화 버튼은 항상 활성화되어 있습니다.

해결 방법

AS9.1 EE IFR b58f/JES5 UR1. "불완전한" HA가 감지되었기 때문에 Registry Server를 설치할 수 없음(6602508)

설명

(Solaris 전용) HADB가 있는 SPARC Solaris 10에 Application Server 9.1을 설치한 후에 Application Server를 시작한 다음 Registry Server가 있는 JES 5 UR1을 설치하려고 하면 다음 오류가 발생할 수 있습니다.


Dependency Error:  Installation can not proceed because the version of HA
Session Store 4.4.3 detected on this host is incomplete , and a compatible
version is required by Servervice Registry Deployment Support.

해결 방법

Solaris 시스템의 경우 Application Server 9.1 IFR이 있는 JES 5 UR1에서 Registry Server를 설치할 수는 없습니다. 다음 JES5 UR1 배포 디렉토리에서 pkgadd 명령을 사용하여 수동으로 Registry Server 패키지를 설치해야 합니다.


<path>/<OS>/Products/registry-svr/Packages

IE 6.0 브라우저 특정 문제: 로드 밸런서 구성 파일을 내보내면 오류 발생(6516068)

설명

(Internet Explorer 6에만 해당) Internet Explorer 6에서 로드 밸런서 구성 파일(loadbalancer.xml)을 내보내려 하면 브라우저에서 sun-loadbalancer_1_2.dtd DTD 파일을 찾을 수 없다는 오류 메시지를 표시합니다.

해결 방법

파일을 저장하려면 다음 해결 방법을 따릅니다.

  1. Internet Explorer에서 로드 밸런서 페이지에 있는 내보내기를 누릅니다.

    "XML 페이지를 표시할 수 없습니다." 메시지가 표시됩니다.

  2. 오류 프레임을 누른 다음 Internet Explorer에서 파일->다른 이름으로 저장을 선택합니다.

  3. loadbalancer.xml 파일을 선택한 디렉토리에 저장합니다.

설치

이 절에서는 설치와 관련된 알려진 문제점과 해결 방법을 설명합니다.

일부 Linux 시스템에서 "마침" 버튼을 누른 후에 설치 종료가 정지됨(5009728)

설명

이 문제는 몇몇 Linux 시스템에서 발견되었습니다. Java Desktop System 2에서는 가장 일반적으로 나타나는 문제이지만 Linux RedHat 배포에서도 발견되었습니다.

설치 프로그램의 마지막 화면에서 "마침" 버튼을 누른 후 설치 프로그램에서 제품 정보 페이지나 제품 등록 페이지가 있는 브라우저 창을 시작하는 데 실패하고 명령 프롬프트를 반환하지 않은 채 중단됩니다.

해결 방법

설치 프로그램을 시작했던 단말기 창에서 Ctrl+C를 눌러 설치 프로그램을 종료합니다. 이렇게 하면 제품 정보 페이지나 등록 페이지가 있는 브라우저 창이 시작됩니다. 그러나 브라우저 창이 나타나지 않는 경우에는 브라우저를 시작하고 다음 URL을 입력하면 정보 페이지를 볼 수 있습니다.


file://install_dir/docs-ee/about.html

제품을 등록하는 설치 옵션을 선택한 경우에는 제품 정보 페이지에서 등록 페이지로 연결되는 링크를 따라갑니다.

Windows에서 설치하는 동안 imq 디렉토리를 만들어야 함(6199697)

설명

Windows에서 Application Server Enterprise Edition을 설치한 직후 Message Queue 브로커가 시작되지 않고 drive:\as\domains\domain1\imq 디렉토리가 없다는 메시지가 표시됩니다.

domain1을 시작한 후 브로커가 시작된 경우에는 디렉토리가 Application Server에 의해 만들어지기 때문에 문제가 발생하지 않습니다.

해결 방법

  1. 브로커를 만들기 전에 var_home_dir_location을 만듭니다.


    $imqbrokerd -varhome var_home_dir_location
    

    예를 들면 다음과 같습니다.


    $imqbrokerd -varhome D:\as\domains\domain1\imq

Windows Vista에 SDK를 설치하는 동안 허위 경고 발생(6533646)

설명

Windows Vista에 번들로 제공되는 SDK를 설치할 때 "Unsupported Installation Platform Detected" 오류가 발생할 수 있습니다. 하지만 설치는 문제 없이 성공합니다.

해결 방법

이 경고는 전혀 문제가 되지 않습니다. Application Server는 Windows Vista에서 실행되며, 이후 버전에서 이 메시지는 제거될 예정입니다.

제거를 통해 productregistry 파일이 제대로 업데이트되지 않음. 자동 설치 모드를 사용할 수 없음(6571598)

설명

Application Server productregistry 파일에 공유 구성 요소 구성이 있는 경우 Application Server 제거 절차에서 productregistry파일이 올바르게 업데이트되지 않으므로 productregistry 파일을 제거하거나 이름을 바꾸지 않으면 이후 설치에 자동 모드를 사용할 수 없습니다. productregistry 파일에 있는 공유 구성 요소 항목을 그대로 두도록 설계되었지만 이로 인해 이후 자동 설치에 혼동이 생깁니다.

해결 방법

제거 로그 파일을 통해 성공적인 제거가 보고되면 이후 설치를 실행하기 전에 productregistry 파일을 삭제합니다. 이전 제거가 성공적으로 완료되었는지 확인하려면 <install_dir>에서 appserv_uninstall.class 파일을 찾습니다. 제거에 성공한 경우에는 이 파일이 없습니다.


주 –

제거에 성공하지 않은 경우에는 productregistry를 삭제하지 마십시오.


productregistry 파일은 Solaris의 경우 /var/sadm/install, Linux의 경우 /var/tmp에 있습니다.

IFR. MQ 패키지 문제로 스파스 로컬 영역에 AS를 설치하지 못함(6555578)

설명

스파스 로컬 영역에 Application Server를 설치하는 경우 MQ(Message Queue)가 먼저 설치되어 있지 않으면 설치가 실패합니다. 설치 프로그램에서 MQ를 설치하려 시도하고 전체 설치가 실패합니다.

해결 방법

스파스 로컬 영역에 Application Server를 설치하기 전에 전역 영역에 MQ를 수동으로 설치해야 합니다. 이 문제를 해결하는 방법은 두 가지입니다.

  1. 하나는 Application Server 9.1 IFR 설치가 있는 동일한 매체에서 전역 영역에 MQ 4.1을 수동으로 설치하여 최신 MQ 패키지를 구하는 것입니다.

    1. 플랫폼에 해당되는 설치 프로그램을 사용합니다.


      mq4_1-installer-SunOS.zip
      mq4_1-installer-SunOS_X86.zip
      mq4_1-installer-Linux_X86.zip
      mq4_1-installer-WINNT.zip
    2. 프로그램 압축을 해제하고 설치 프로그램을 실행합니다.

      설치 프로그램은 mq4_1-installer 디렉토리에 있습니다.

  2. IFR 설치의 구성 요소를 모두 전역 영역에 설치합니다. 이 작업에서는 전역 영역에 있는 MQ의 버전을 검사한 다음 필요한 경우 Application Server 9.1 IFR에 번들로 제공되는 버전으로 업그레이드합니다. 샘플 응용 프로그램 구성 요소를 선택하여 설치하기만 해도 MQ가 IFR 버전으로 업그레이드됩니다.

    1. 전역 영역에서 Application Server 설치를 수행하되 샘플 구성 요소만 선택합니다.

      샘플 구성 요소 설치를 수행하면 모든 영역에 MQ 및 Application Server 공유 구성 요소도 설치됩니다.

    2. Application Server 설치를 이번에는 로컬 스파스 영역에서 실행합니다.

      설치가 문제 없이 완료되어야 합니다.

IFR 설치 -console 프롬프트인 "Do you want to upgrade from previous Application?"이 제거되어야 함(6592454)

설명

Application Server 9.1 IFR 설치 프로그램을 —console 옵션(명령줄 모드)으로 실행하면 다음 프롬프트가 표시됩니다.


Do you want to upgrade from previous Application Server version?

IFR 설치 프로그램에서는 이러한 업그레이드를 지원하지 않기 때문에 이 프롬프트는 잘못된 메시지입니다. 프롬프트에 yes로 응답하면 설치가 정상적으로 진행되지만 업그레이드가 아닌 전체 설치가 수행되었다는 메시지는 표시되지 않습니다.

해결 방법

Application Server 설치를 업그레이드하려면 업그레이드 도구를 사용합니다.

Java EE Tutorial

Sun Java System Application Server 9.1에서 Java EE 5 Tutorial을 실행하려면 다음 작업을 수행합니다.

Java EE Tutorial의 MDB 오류 예(6591307)

설명

The Java EE 5 Tutorial의 32 장, Java EE Examples Using the JMS API, The Java EE 5 TutorialAn Application Example That Consumes Messages from a Remote Server에서 이 예는 더 이상 적용되지 않습니다. MDB가 메시지를 받지 못합니다. 두 시스템 사이에서 메시지를 보내는 다른 두 가지 예는 제대로 작동합니다(Java EE 5 TutorialThe Java EE 5 TutorialRunning JMS Client Programs on Multiple SystemsThe Java EE 5 TutorialAn Application Example That Deploys a Message-Driven Bean on Two Servers).

해결 방법

이후의 Application Server 빌드에서 수정될 예정입니다.

Java Persistence

TopLink에서 Collection 필드/등록 정보가 복제 가능할 것이라고 예상함(이슈 트랙커 556)

설명

java.util.Arrays.asList() API를 사용하여 Object[]Collection으로 변환하는 경우 JDK에서 복제할 수 없는 java.util.ArrayList 구현을 반환합니다. 그러면 다음 예외가 발생합니다.


The method invocation of the method [protected native java.lang.Object 
java.lang.Object.clone() throws java.lang.CloneNotSupportedException] on the object 
[[pkg.A id = xxx]], of class [class java.util.Arrays$ArrayList], triggered an 
exception. Internal Exception: java.lang.reflect.InvocationTargetException Target 
Invocation Exception: java.lang.CloneNotSupportedException: 
java.util.Arrays$ArrayList

이 문제는 https://glassfish.dev.java.net/issues/show_bug.cgi?id=556에서 추적됩니다.

해결 방법

구성자를 사용하여 다른 모음을 만듭니다. 예를 들면 다음과 같습니다.


myCollection = new ArrayList(java.util.Arrays.asList(a))

라이프사이클 관리

이 절에서는 라이프사이클 관리와 관련된 알려진 문제점과 해결 방법을 설명합니다.

ejb-timer-service 등록 정보를 설정하면 set 명령이 실패함(6193449)

설명

ejb-timer-service 등록 정보 minimum-delivery-interval9000으로 설정한 후에 ejb-timer-service 등록 정보 redelivery-interval-in-mills7000으로 설정하려고 하면 다음 오류가 표시되면서 set 명령이 실패합니다.


[echo] Doing admin task set
[exec] [Attribute(id=redelivery-interval-internal-in-millis) : 
Redelivery-Interval (7,000) 
should be greater than or equal to Minimum-delivery-interval-
in-millis (9,000)]
[exec] CLI137 Command set failed.

문제는 재전달 간격 등록 정보를 최소 전달 등록 정보와 관련시키는 로직이 잘못되어 최소 전달 간격이 재전달 간격보다 큰 곳에서 GUI 또는 CLI를 사용하여 값을 설정하지 못한다는 것입니다.

minimum-delivery-interval-in-millis는 항상 ejb-timer-service 등록 정보 redelivery-interval-in-millis 이상으로 설정해야 합니다. 문제는 Application Server에서 redelivery-interval-in-millis 값이 minimum-delivery-interval-in-millis 값보다 크다고 잘못 검증하는 것입니다.

해결 방법

다음과 같이 등록 정보의 기본값을 사용합니다.


minimum-delivery-interval(default)=7000
redelivery-interval-in-millis(default)=5000

기본값 외의 값을 사용하면 오류가 발생합니다.

비DAS 구성 내에 JMS 물리적 대상을 나열하면 오류 발생(6532532)

설명

default-config를 사용하여 JMS 물리적 대상을 보려고 하면 오류 메시지가 표시됩니다.

해결 방법

예상되는 동작입니다. Application Server 9.1에서 default-config는 구성 정보의 템플리트이기 때문에 default-config에 대해 JMS 작업(listcreate 등)을 실행할 수 없습니다. 하지만 클러스터 또는 독립 실행형 인스턴스의 구성에 대해서는 이 JMS 작업을 실행할 수 있습니다.

Win2003에만 해당: 페이지가 지정되지 않은 풀 누수 메모리로 인해 tcp 스택 및 richaccess 테스트 중단(6575349)

설명

(Windows 2003에만 해당) rich access 기능을 수행하려고 하면 Windows 2003 시스템에서 메모리 누수가 발생합니다. 문제가 발생하는 이유는 페이지가 지정되지 않은 Win32 풀이 계속 커져서 결국 TCP/IP 스택 전체를 중지시키기 때문입니다. 오류가 발생하고 나면 TCP/IP 스택은 복구할 수 있는 상태가 되며, 유일한 복원 방법은 Windows 2003 시스템을 재부트하는 것입니다.

해결 방법

Microsoft 문제이며(사례 번호: SRX070906600011), 핫 픽스를 사용할 수 있습니다. 자세한 내용은 Microsoft 고객 지원에 문의하십시오.

해결 방법

위에 언급된 핫 픽스 외에 이 문제를 해결하는 방법은 두 가지가 있습니다.

  1. domain.xml http-listener 속성 blocking-enabled="true"를 구성하거나 다음 http-listener 등록 정보를 추가하여 Grizzly 차단 모드를 사용합니다.


    <property name="blocking" value="true"/>
  2. Windows Vista 또는 Windows XP를 사용합니다.

로깅

이 절에서는 로깅과 관련된 알려진 문제점과 해결 방법을 설명합니다.

access,failure의 디버그 명령문을 설정하면 Application Server 시작이 정지됨(6180095)

설명

JVM에 java.security.debug 옵션을 설정하면 서버 인스턴스 시작이 교착 상태로 중단됩니다. 예를 들어 domain.xml에 다음과 같이 설정하면 이러한 문제가 발생합니다.


<jvm-options>-Djava.security.debug=access,failure</jvm-options>

해결 방법

현재는 해결 방법이 없습니다. 이 플래그를 설정하는 것을 피하십시오.

Message Queue

이 절에서는 Java Message Queue와 관련된 알려진 문제점과 해결 방법을 설명합니다.

타이밍에 따라 JMS 재연결을 성공적으로 완료할 수 없는 경우가 있음(6173308, 6189645, 6198481, 6199510, 6208728)

설명

몇 가지 문제로 인해 타이밍 종속 시나리오에서 재연결에 실패할 수 있습니다.

해결 방법

다음과 같은 방법으로 이 문제를 해결할 수 있습니다.

Linux에서 클러스터 프로필로 MQ 브로커를 시작하지 못함(6524871)

설명

Linux 시스템에 클러스터 프로필로 도메인을 만들고 나면 MQ 브로커가 시작되지 않아 java.lang.OutOfMemoryError: Java heap space 오류가 발생하고 서버 인스턴스가 다시 시작되지 않을 수 있습니다. 이 조건이 발생하면 시스템이 복구되지 않습니다. /etc/hosts 파일이 잘못 구성된 것이 문제입니다. 서버 호스트 이름이 루프백 주소 127.0.0.1을 가리키고 있습니다.

해결 방법

설계에 따라 루프백 주소를 가리키도록 구성된 네트워크 장치로는 MQ 브로커 클러스터를 시작할 수 없습니다. 이 문제는 버그가 아닙니다. 해결 방법은 Application Server 호스트의 /etc/hosts 파일이 127.0.0.1을 가리키지 않게 하는 것입니다.

모니터링

이 절에서는 모니터링과 관련된 알려진 문제점과 해결 방법을 설명합니다.

HTTP 서비스 모니터링 통계 중 일부가 유용한 정보를 제공하지 않아 무시해야 함(6174518)

설명

HTTP 서비스의 일부 요소에 대한 모니터링 통계를 보면 제시된 값이 현재 값과 일치하지 않거나 항상 0인 경우가 있습니다. 특히, 다음 HTTP 서비스 통계는 Application Server에 적용할 수 있는 정보를 제공하지 않으며 무시해야 합니다.

해결 방법

이러한 모니터는 이후의 릴리스에서 제거되고 더 적절한 정보로 대체될 예정입니다.

관리 UI에서 JNDI 찾아보기를 열면 server.log에 대량의 예외가 덤프됨(6591734)

설명

관리 UI에서 JNDI 브라우저를 열면 수많은 예외가 발생합니다.

해결 방법

현재는 해결 방법이 없습니다.

샘플

이 절에서는 Application Server 9.1 제품에 포함된 샘플 코드와 관련된 알려진 문제점과 해결 방법을 설명합니다.

설명서에 JMS 자원을 만들어야 한다고 명시되어 있지 않음(6198003)

설명

asadmin 배포 지침에 따라 MQ 페일오버 샘플 응용 프로그램을 실행하기 전에 JMS 자원을 만들어야 한다는 점이 설명서에 명시적으로 설명되어 있지 않습니다.

다음과 같은 오류가 발생합니다.


/opt/SUNWappserver/domains/domain1/config/sun-acc.xml -name 
MQFailoverTestClient -textauth -user j2ee -password j2ee
ov 18, 2004 10:50:17 PM com.sun.enterprise.naming.NamingManagerImpl 
bindObjects
SEVERE: NAM0006: JMS Destination object not found: jms/durable/TopicA
Nov 18, 2004 10:50:18 PM com.sun.enterprise.naming.NamingManagerImpl 
bindObjects
SEVERE: javax.naming.NameNotFoundException
javax.naming.NameNotFoundException

asadmin deploy 명령을 사용하여 수동 배포를 수행할 경우 JMS 자원을 직접 만들어야 한다는 점과 샘플 응용 프로그램 배포를 위해 제공된 ant 대상을 사용해야 한다는 점이 명시적으로 설명되어 있지 않습니다.

해결 방법

응용 프로그램을 실행하는 데 필요한 JMS 자원을 만드는 build.xml 스크립트에 asant 배포 대상을 사용합니다.

Linux에서 웹 서비스/보안 샘플에서 인증서를 만드는 동안 런타임 오류가 표시됨(6198239)

설명

install_dir/samples/webservices/security 샘플(basicSSl)을 Linux에 배포할 때 인증서는 만들어지지 않고 다음과 유사한 오류가 발생합니다.


generate_certs: [echo] ***Exporting certificate from NSS database 
[exec] Result: 1 [echo] ***Generating Java Keystore from generated 
certificate [exec] keytool error: java.lang.Exception: Input not an 
X.509 certificate [exec] Result: 1 [echo] ***Generating Java trust 
store from generated certificate [exec] keytool error: java.lang.
Exception: Input not an X.509 certificate [exec] Result: 1
.
.
.
generate_certs: [echo] ***Exporting server certificate from NSS database to 
a PKCS12 certificate file [exec] /opt/sun/appserver/lib/pk12util: /usr/lib/
libnss3.so: version `NSS_3.9' not found (required by /opt/sun/appserver/lib/
pk12util) [exec] /opt/sun/appserver/lib/pk12util: /usr/lib/libnss3.so: 
version `NSS_3.6' not found (required by /opt/sun/appserver/lib/pk12util) 
[exec] /opt/sun/appserver/lib/pk12util: /usr/lib/libnss3.so: version 
`NSS_3.7' not found (required by /opt/sun/appserver/lib/pk12util) [exec] 
Result: 1

문제는 Linux 설치에서 NSS 라이브러리가 Solaris 설치와 다른 위치에 있다는 점입니다. Linux에서 배포할 때 LD_LIBRARY_PATH가 올바른 NSS 라이브러리를 가리키는지 확인해야 합니다. LD_LIBRARY_PATH를 사용자 환경 또는 install_dir/bin/asant 쉘 래퍼 스크립트에서 설정합니다.

해결 방법

다음 중 한 가지를 수행합니다.

업그레이드 후에 AS9.1 샘플 및 JES5 포털 샘플이 derby 포트 1527을 두고 경쟁함(6574563)

설명

Windows에서 Application Server 9.1로 업그레이드한 후에 샘플 및 JES5 포털 샘플이 Derby 포트 1527을 두고 경쟁합니다. Application Server 9.1은 APP:APP로 포트 0.0.0.0:1527에서 JavaDB를 자동으로 시작하지만, JES5 포털 JavaDB에서는 portal:portalhostnameIP:1527에 바인드하려고 합니다.

이 버그에서 설명하는 현상은 이미 JES 5, 버그 6472173에 소개된 문제입니다. 버그 6472173의 해결 방법은 Sun Java Enterprise System 5 Installation Guide for Microsoft Windows를 참조하십시오.

해결 방법

다음 명령을 사용하여 Derby 데이터베이스를 시작합니다.


<JES installation dir>\appserver\bin\asadmin start-database --dbhome <JES installation dir>\portal\data\derby

보안

이 절에서는 Application Server 및 웹 응용 프로그램 보안과 인증에 관련된 알려진 문제점과 해결 방법을 설명합니다.

SSL 종료가 작동하지 않음(6269102)

설명

SSL 종료가 작동하지 않습니다. 로드 밸런서(하드웨어)가 SSL 종료에 맞게 구성되었다면 Application Server는 리디렉션 동안 프로토콜을 https에서http로 변경합니다.

해결 방법

하드웨어 로드 밸런서와 Application Server 사이에 소프트웨어 로드 밸런서를 추가합니다.

SSL에서 소켓 연결 누수 발생(6492477)

설명

JVM 버그 때문에 HTTP Listener에서 security-enabledtrue로 설정되어 있는 경우 일부 JDK 버전에서 누수 문제가 발생합니다. 이 버그를 재현할 수 있는 단계는 다음과 같습니다.

  1. HTTP Listener에서 security-enabledtrue로 설정합니다.


    <http-listener acceptor-threads="1" address="0.0.0.0" 
    blocking-enabled="false" default-virtual-server="server" enabled="true" 
    family="inet" id=" http-listener-1" port="8080" security-enabled="true" 
    server-name="" xpowered-by="true">
  2. quicklook 테스트의 끝에서 정지 도메인을 주석으로 처리합니다.

  3. quicklook 테스트를 실행합니다.

  4. 소켓 사용을 검사합니다.


    netstat -an | grep 8080

    다음이 사용 중인 것으로 표시됩니다.


    *.8080               *.*                0      0 49152      0 LISTEN
    *.8080               *.*                0      0 49152      0 BOUND

이 문제는 https://glassfish.dev.java.net/issues/show_bug.cgi?id=849의 Glassfish 사이트에서 추적됩니다.

해결 방법

최신 JDK 버전으로 업그레이드합니다.

업그레이드 유틸리티

이 절에서는 업그레이드 유틸리티와 관련된 알려진 문제점과 해결 방법을 설명합니다.

install_dir/domains 디렉토리가 아닌 사용자 정의 경로에서 만든 도메인이 직접 업그레이드되지 않음(6165528)

설명

install_dir /domains 디렉토리가 아닌 사용자 정의 경로에서 생성된 도메인은 Application Server Enterprise Edition 8에서 Application Server Enterprise Edition 8.1로 업그레이드되는 동안 직접 업그레이드되지 않습니다.

업그레이드 유틸리티를 실행하고 install_dir을 소스 설치 디렉토리로 식별하면 install_dir/domains 디렉토리에 생성되는 도메인만 업그레이드됩니다. 다른 위치에 생성된 도메인은 업그레이드되지 않습니다.

해결 방법

업그레이드 프로세스를 시작하기 전에 모든 도메인 디렉토리를 다른 위치에서 install_dir/domains 디렉토리로 복사합니다.

일부 Linux 시스템에서 "업그레이드 마법사 시작" 버튼을 누른 후에 "현재 위치에서 업그레이드"를 실행하는 설치 프로그램에서 업그레이드 도구를 시작하지 못함(6207337)

설명

이 문제는 몇몇 Linux 시스템에서 발견되었으며 Java Desktop System 2에서 가장 일반적으로 나타나지만 Red Hat 배포에서도 볼 수 있습니다.

설치 프로그램 화면의 "업그레이드 도구 시작" 버튼을 누른 후에 설치 프로그램에서 업그레이드 도구를 시작하여 업그레이드 프로세스를 완료하는 데 실패하고 명령 프롬프트가 반환되지 않은 채 중단됩니다.

해결 방법

이 문제는 명령줄 설치 모드를 사용하여 현재 위치에서 업그레이드를 실행하는 경우에는 발생하지 않습니다.

  1. 현재 위치에서 업그레이드를 GUI 모드에서 실행하고 이 문제가 발생하면 설치 프로그램이 시작된 단말기 창에서 Ctrl+C를 눌러 설치 프로그램을 종료합니다.

  2. 단말기 창에서 다음 명령을 사용하여 업그레이드 도구를 시작합니다.


    install_dir/bin/asupgrade --source install_dir/domains --target 
    install_dir --adminuser adminuser --adminpassword adminpassword 
    --masterpassword changeit

    adminuseradminpassword는 업그레이드 중인 설치를 위해 사용되는 값이 일치해야 합니다.

  3. 업그레이드 도구에서 업그레이드 프로세스를 완료하면 브라우저를 시작하고 다음 URL을 입력하여 정보 페이지를 검토할 수 있습니다.


    file://install_dir/docs-ee/about.html

제품을 등록하는 설치 옵션을 선택한 경우에는 제품 정보 페이지에서 등록 페이지로 연결되는 링크를 따라갑니다.

8.0 PE(Platform Edition)에서 8.1 EE(Enterprise Edition) UR2로 업그레이드하는 동안이나 그 이후에 자체 서명된 인증서가 신뢰되지 않음(6296105)

해결 방법

(업그레이드 후) 대상 domain.xml에서 다음 항목을 제거하고 서버를 다시 시작합니다.

<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}
/config/keystore.jks</jvm-options>-
<jvm-options>Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}
/config/cacerts.jks</jvm-options>

업그레이드 도구에서 인스턴스(클러스터 구성원)의 수정된 index.html 내용을 덮어씀(6386451)

설명

업그레이드 도구가 서버 인스턴스의 기존 index.html 파일을 덮어씁니다.

해결 방법

업그레이드 도구를 실행하기 전에 기존 index.html 파일을 백업하고, 나중에 백업된 파일을 복원합니다.

(sbs-manual, sbs-installer)에서 서버 인스턴스 서버에 null이라는 이름의 시스템 커넥터가 없다는 오류를 표시함(6545145)

설명

Application Server 8.0PE에서 9.1로 업그레이드하는 경우 서버에 null이라는 이름의 시스템 커넥터가 없다는 오류가 발생하고 sbs-manual에 잘못된 사용자 정보가 표시됩니다. 하드코드된 값을 변경해도 같은 오류 메시지가 표시됩니다. 이것은 8.0과 9.1 사이에서 domain.xml이 변경되어서 발생하는 문제입니다.

해결 방법

8.0 PE를 9.1로 업그레이드하는 동안에만 이 버그가 발생합니다. 해결 방법은 8.1, 8.2 또는 9.0으로 일단 업그레이드했다가 다시 9.1로 업그레이드하는 것입니다.

서로 다른 빌드 조합을 사용하는 경우 업그레이드 시 다른 여러 도메인이 손실됨(6546130)

설명

현재 위치에서 업그레이드를 수행하는 경우 소스에 여러 도메인이 있으면 프로세스가 중지된 후에도 설치 프로그램에서 업그레이드 도구를 호출합니다. GUI 모드에서 호출한 경우에 발생하는 문제입니다.

해결 방법

  1. 현재 위치에서 CLI 모드로 설치를 수행하고 설치 프로세스의 마지막에 설치 프로그램에서 업그레이드 도구를 선택하라는 프롬프트를 표시하면 종료합니다. 그러면 도메인 디렉토리에 있는 도메인이 삭제되지 않습니다. 업그레이드 도구는 bin 디렉토리에서 수동으로 호출해야 합니다.

  2. 현재 위치에서 GUI 모드로 설치를 수행할 때 도메인 루트에 도메인의 백업을 만들어 작업 중에 도메인이 손실되는 것을 방지합니다. 설치 프로세스의 마지막에 설치 프로그램에서 업그레이드 도구를 호출하라는 프롬프트를 표시하면 종료합니다. 도메인이 손실된 경우 백업된 도메인을 도메인 디렉토리에 복사합니다. 업그레이드 도구를 수동으로 실행하여 업그레이드를 수행합니다.

Solaris: 업그레이드 도구의 미리 입력된 마스터 비밀번호가 AS8.2이 아닌 AS9.1의 값임(6565825)

설명

AS 8.2에서 9.1로 업그레이드하는 경우 8.2 설치의 마스터 비밀번호가 9.1 설치로 상속되지 않습니다. 그러면 다음 관리자 로그인 시에 인증 오류가 발생합니다.

해결 방법

Application Server 9.1에서 기본 관리자 비밀번호는 changeit입니다. 8.2에서 업그레이드한 후에 9.1로 로그인할 때 문제가 발생하지 않게 하려면 다음 세 가지 중 하나를 수행합니다.

AS9.1 IFR 업그레이드 도구에서 JES5U1 MQ 저장소를 새로운 var 홈으로 마이그레이션하지 않음(6573635)

설명

업그레이드 도구에서는 어떤 형태로도 데이터베이스 또는 데이터베이스 테이블의 업그레이드를 처리하지 않으며, 그런 기능을 지원할 계획도 없습니다. 자원 참조 구성이 전송되며 Application Server는 원래 데이터베이스 및 테이블을 사용하여 작업을 계속해야 합니다. 데이터베이스를 변경하거나 데이터베이스 테이블을 전송하려면 사용 중인 데이터베이스에서 작동하는 도구를 사용합니다.

해결 방법

다음 단계를 수행하여 MQ 저장소를 마이그레이션합니다.


주 –

AS 8.2가 종료된 다음 AS9.1 업그레이드 도구를 실행한 , AS9.1을 처음으로 시작하기 전에 다음 단계를 수행합니다. IFR 설치/업그레이드 후에 이미 AS 9.1을 시작한 경우에는 이 단계를 수행하지 마십시오. MQ 메시지 저장소가 불안정해질 수 있습니다.


  1. domains/domain1/imq 하위 디렉토리 전체를 AS 8.x domains 디렉토리에서 AS 9.1 domains 디렉토리로 복사합니다.

  2. 디렉토리 및 파일의 소유자가 Application Server를 실행할 사용자와 같은지 확인합니다.

위의 단계를 수행한 후 Application Server 9.1을 시작하고 Application Server 9.1에서 MQ 저장소를 사용할 수 있습니다. domains 디렉토리는 JES5 U1 형식에서 MQ 4.1 형식으로 마이그레이션됩니다. AS 8.2에 있는 원래 JES5 U1 MQ 저장소는 보존되며 AS 9.1을 시작할 때 이 절차나 MQ4.1에 의해 수정되지 않습니다.

JES5(AS 8.2)를 AS 9.1로 업그레이드. PS 커뮤니티 샘플이 손상되어 수많은 javax.faces 오류 발생(6576700)

설명

JES5(Application Server 8.2)에서 Application Server 9.1로 업그레이드할 경우 Portal Server 커뮤니티 샘플은 더 이상 작동하지 않으며 수많은 javax.faces.application.ApplicationFactory 오류를 일으킵니다.

해결 방법

JES5 Portal Server에서 Application Server 8.2가 설치된 경우 Application Server 8.2에서 9.1로의 업그레이드는 지원되지 않습니다. Application Server를 9.1로 업그레이드하기 전에 Portal Server를 Java ES 5 Update 1로 업그레이드해야 합니다.

AS91 IFR b58, Linux: 설치 프로그램을 통해 새 Java를 설치한 후에 /usr/jdk/entsys-j2se 링크가 업데이트되지 않음(6591697)

설명

Linux 플랫폼에 있는 IFR 설치 프로그램을 사용해서 Application Server 8.2에서 9.1로 업그레이드하는 경우 설치를 성공적으로 완료한 후에 JDK 설치 옵션을 선택하면 대부분의 JES 구성 요소가 작업을 멈춥니다.

해결 방법

이 문제는 Linux 플랫폼에 있는 Application Server 9.1의 IFR 설치에만 영향을 주며 JDK 설치 옵션을 선택한 경우에만 발생합니다. 이 문제를 해결하려면 설치가 끝난 직후에 /usr/jdk/entsys-j2se/usr/java/jdk1.5.0_12 디렉토리에 수동으로 연결합니다.

AS9.1 IFR Win 인플레이스(In-place) 백업이 값 검사에서 asupdate.bat 양식 값과 통합되지 않음 - 잘못된 경로(6596412)

설명

Windows에서 Application Server 9.1 IFR 업그레이드를 수행할 때 인플레이스(In-place) 백업이 asupdate.bat 양식 값에 올바르게 통합되지 않습니다. ASupdate.bat GUI 화면에 잘못된 정보를 입력하고 다음을 누르면 업그레이드 설치 프로그램에서 인플레이스(In-place) 업그레이드인지 여부를 감지하려 합니다. 그렇다면 업그레이드를 수행하기 전에 domain1이 백업 디렉토리로 이동합니다. 업그레이드가 진행되는 동안 잘못된 정보 때문에 오류 메시지가 표시됩니다. 오류를 즉시 수정하려 하면 domain1이 이미 이동했기 때문에 경로 오류가 발생합니다.

해결 방법

{current source path}/backup에서 소스 디렉토리를 domain1_ {timestamp} 디렉토리로 변경하거나 취소 버튼으로 설치 프로그램을 종료한 후 다시 시작합니다.

AS9.1 IFR Windows, 인라인 업그레이드, asupgrade.bat를 짧은 경로와 긴 경로에 사용하면 Domain1이 삭제됨(6596394)

설명

(Windows에만 해당) 프로그램 디렉토리 경로에 특수 문자나 DOS 스타일의 짧은 이름을 사용하여 이전 버전의 Application Server를 설치한 경우 이후의 인플레이스(In-place) 업그레이드에서 같은 디렉토리 경로 이름을 사용하면 Application Server 9.1로의 인플레이스(In-place) 업그레이드가 실패합니다.

예를 들어 다음 중 한 위치에 Application Server 8.2가 설치된 경우:


C:\Program Files (x86)\dirs\appserver
c:\progra~2\dirs\appserver

설치 프로그램에서 짧은 이름이나 특수 문자를 필요한 긴 이름 형식으로 변환할 수 없기 때문에 9.1로의 인플레이스(In-place) 업그레이드 수행이 실패합니다.

해결 방법

특수 문자나 DOS 스타일의 짧은 이름 표시(progra~2 등)가 포함된 경로 이름을 사용하여 Application Server를 설치하면 이후의 업그레이드 설치에 방해가 되기 때문에 좋지 않습니다. 그런 설치가 있는 경우에는 업그레이드를 수행하기 전에 긴 경로 이름을 사용하여 다시 설치하거나 완전히 새로운 디렉토리에 새 버전의 Application Server를 설치합니다.

AS 9.1 IFR: 웹 UI 인증 문제(6569813)

설명

Application Server 업그레이드를 수행한 후 <jsp:forward> 태그가 Authenticate.jsp에서 예상대로 작동하지 않습니다. 서버 로그에서 <jsp:forward> 호출이 오류를 일으켜 WebUI에 빈 페이지가 표시됩니다. 문제는 Authenticate.jsp에 있는 <jsp:forward><jsp:forward page="${redirectPage}"/>와 같은 페이지 속성이 필요하지만 전달되는 값은 Authenticate.jsp가 순수한 JSP 페이지인 경우에도 작동하지 않는 /registry/thin/{pagename}.jsp 등의 상대적 경로라는 것입니다.

해결 방법

Application Server 업그레이드를 수행한 후에 asadmin 도구로 다음 명령을 실행하여 domain.xml에서 <auth-realm>을 설정합니다.

  1. <appserver9.1-install-dir>/bin으로 이동하여 다음 명령을 실행합니다.


    ./asadmin delete-auth-realm --host localhost --port 6489 certificate

    그러면 기존 auth-realm 인증서가 있는 경우 제거됩니다.

  2. 다음 명령을 실행합니다.


    ./asadmin create-auth-realm --terse=false --echo=true --interactive=true \
    --user admin --host localhost --port 6489 --classname \
    com.sun.enterprise.security.auth.realm.certificate.CertificateRealm \
    --property assign-groups=have.client.cert  certificate

    그러면 assign-groups 등록 정보가 있는 새 <auth-realm>이 만들어집니다.

  3. Application Server registry 도메인을 중지했다가 다시 시작합니다.

asupgrade GUI의 현지화된 온라인 도움말이 존재하지 않음(6610170)

설명

영어가 아닌 언어로 asupgrade GUI를 실행하는 경우 GUI의 온라인 도움말이 영어 외의 선택된 언어로 현지화되어 있지 않습니다.

해결 방법

지금은 해결 방법이 없습니다. 온라인 도움말은 영어가 아닌 모든 대상 언어로 현지화될 예정입니다.

웹 컨테이너

이 절에서는 웹 컨테이너와 관련된 알려진 문제점과 해결 방법을 설명합니다.

Windows에서 --precompilejsp=true를 사용하여 응용 프로그램을 배포하면 JAR 파일이 응용 프로그램 내에서 잠겨 이후의 배포 해제나 재배포가 실패할 수 있음(5004315)

설명

Windows에서 응용 프로그램을 배포할 때 JSP의 사전 컴파일을 요청하고 나중에 해당 응용 프로그램의 배포를 해제하거나 해당 응용 프로그램(또는 동일한 모듈 아이디를 가진 응용 프로그램)을 재배포하려고 시도하면 예상한 것처럼 작동하지 않습니다. 문제는 JSP 사전 컴파일을 수행하면 응용 프로그램의 JAR 파일을 열지만 닫지 않고 Windows에서는 배포 해제 시 그러한 파일을 삭제하지 못하거나 재배포 시 덮어쓰지 못합니다.

배포 해제는 응용 프로그램이 Application Server에서 논리적으로 제거된다는 점에서 어느 정도는 성공한 것으로 볼 수 있습니다. 또한 asadmin 유틸리티는 오류 메시지를 반환하지 않지만 응용 프로그램의 디렉토리와 잠긴 jar 파일은 서버에 남아 있습니다. 서버의 로그 파일에는 파일 및 응용 프로그램 디렉토리를 삭제하는 데 실패한 것을 설명하는 메시지가 포함됩니다.

배포 해제에 실패한 후 응용 프로그램을 재배포하려는 시도는 서버에서 기존 파일과 디렉토리를 제거하려고 하기 때문에 역시 실패하게 됩니다. 이러한 문제는 원래 배포한 응용 프로그램과 동일한 모듈 아이디를 사용하는 응용 프로그램을 배포하려고 시도하면 서버가 응용 프로그램 파일을 저장할 디렉토리 이름을 선택할 때 모듈 아이디를 사용하기 때문에 발생할 수 있습니다.

먼저 응용 프로그램의 배포를 해제하지 않고 재배포하려고 시도하는 경우도 같은 이유 때문에 실패합니다.

진단

응용 프로그램의 배포를 해제한 후 재배포하려고 시도하면 asadmin 유틸리티는 아래와 유사한 오류를 반환합니다.


An exception occurred while running the command. The exception 
message is: CLI171 Command deploy failed : Deploying application in 
domain failed; Cannot deploy. Module directory is locked and can't 
be deleted.

해결 방법

응용 프로그램을 배포할 때 --precompilejsps=false(기본 설정)를 지정한 경우에는 이 문제가 발생하지 않습니다. 응용 프로그램을 처음 사용하면 JSP 컴파일이 트리거되어 첫 번째 요청에 대한 응답 시간은 이후의 요청에 대한 응답 시간보다 더 깁니다.

사전 컴파일을 수행하면 응용 프로그램을 배포 해제 또는 재배포하기 전에 서버를 중단하고 다시 시작해야 합니다. 서버를 종료하면 잠긴 JAR 파일의 잠금이 해제되어 재시작한 후 배포 해제 또는 재배포를 성공적으로 수행할 수 있습니다.

<load-on-startup> 요소가 포함된 Servlet 2.4 기반 web.xml로 WAR을 배포할 수 없음(6172006)

설명

web.xml 파일에서 선택 요소인 load-on-startup 서블릿 요소는 연관된 서블릿이 선언된 웹 응용 프로그램 시작의 일부로 로드되고 초기화된다는 것을 나타냅니다.

이 요소의 옵션 부분은 서블릿이 웹 응용 프로그램의 다른 서블릿과 관련하여 로드되고 초기화되는 순서를 나타내는 정수입니다. <load-on-startup> 요소가 비어 있으면 서블릿이 웹 응용 프로그램을 포함하는 시작 중에 로드되고 초기화되는 한 순서는 상관이 없음을 의미합니다.

web.xml을 위한 Servlet 2.4 스키마는 더 이상 빈 <load-on-startup>을 지원하지 않습니다. 즉, Servlet 2.4 기반 web.xml을 사용할 때 정수를 지정해야 합니다. <load-on-startup/>와 같이 빈 <load-on-startup>을 지정하면 web.xmlweb.xml을 위한 Servlet 2.4 스카마에 대한 검증에 실패하며 이 때문에 웹 응용 프로그램 배포에 실패하게 됩니다.

역호환성 문제로 빈 <load-on-startup>을 지정해도 Servlet 2.3 기반의 web.xml과는 아무 문제 없이 작동합니다.

해결 방법

Servlet 2.4 기반 web.xml을 사용하여 서블릿 로드 순서가 중요하지 않다는 것을 나타낼 때 <load-on-startup>0</load-on-startup>을 지정합니다.

자원이 제약된 서버에서 JSP 페이지를 컴파일할 수 없음(6184122)

설명

JSP 페이지에 액세스하지만 컴파일에 실패하고 서버 로그에는 다음과 같은 스택 추적과 함께 "Unable to execute command"라는 오류 메시지가 포함됩니다.


at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.
exec(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.
launch(Execute.java:416) 
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:427) 
at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.
executeExternalCompile(DefaultCompilerAdapter.java:448) 
at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute
(JavacExternal.java:81) 
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:842) 
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:682) 
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:396)

해결 방법

JSP 컴파일 스위치인 "fork"를 "false"로 설정합니다.

이 작업은 다음 중 한 가지 방법으로 수행할 수 있습니다.

어떤 방법으로 설정하든 ant에서 javac 컴파일을 위한 새로운 프로세스를 생성하지 못하도록 합니다.

응용 프로그램 서버에서 auth-passthrough Web Server 6.1 Add-On을 지원하지 않음(6188932)

설명

Sun Java System Application Server 9.1에서는 Sun Java System Application Server Enterprise Edition 7.1에서 사용할 수 있는 auth-passthrough 플러그인 기능을 통해 제공되는 기능의 지원을 추가합니다. 하지만 Application Server 9.1에서는 auth-passthrough 플러그인 기능이 다르게 구성됩니다.

Application Server Enterprise Edition 7.1의 auth-passthrough 플러그인 기능은 다음과 같은 2계층 배포 시나리오에서 유용하게 사용됩니다.

이러한 네트워크 아키텍처에서 클라이언트는 프런트엔드 웹 서버에 연결됩니다. 이 웹 서버는 service-passthrough 플러그인 함수로 구성되어 있으며 프록시를 거친 Application Server 인스턴스에 처리하도록 HTTP 요청을 전달합니다. Application Server 인스턴스는 웹 서버 프록시의 요청만을 받을 수 있는데 클라이언트 호스트로부터는 직접 받지 못합니다. 결과적으로, 클라이언트의 IP 주소 같은 클라이언트 정보를 쿼리하는 프록시를 거친 Application Server 인스턴스에 배포된 응용 프로그램은 프록시 호스트 IP를 받습니다. 이것이 전달된 요청의 실질적인 보낸 호스트이기 때문입니다.

해결 방법

Application Server Enterprise Edition 7.1에서는 auth-passthrough 플러그인 기능을 프록시가 지정된 Application Server 인스턴스에 구성하여 원격 클라이언트의 정보를 배포된 모든 응용 프로그램에서 직접 사용할 수 있게 만들 수 있습니다. 작업은 service-passthrough 플러그인을 실행하는 중간 웹 서버 대신 프록시가 지정되어 있는 Application Server 인스턴스에서 요청을 직접 받은 것처럼 수행됩니다.

Application Server 9.1에서 auth-passthrough 기능은 다음과 같이 domain.xml에 있는 <http-service> 요소의 authPassthroughEnabled 등록 정보를 TRUE로 설정하여 활성화합니다.


<property name="authPassthroughEnabled" value="true"/>

Application Server Enterprise Edition 7.1에 있는 auth-passthrough 플러그인 기능의 같은 보안 고려 사항이 Application Server 9.1에 있는 authPassthroughEnabled 등록 정보에도 적용됩니다. authPassthroughEnabled를 사용하면 인증 목적으로 사용되는 정보(요청이 전송된 IP 주소 또는 SSL 클라이언트 인증서)를 대체할 수 있기 때문에 authPassthroughEnabled가 TRUE로 설정된 Application Server 9.1 인스턴스에는 신뢰할 수 있는 클라이언트 또는 서버의 연결만 허용해야 합니다. 더욱 주의하는 의미에서 회사 방화벽 뒤의 서버에서만 authPassthroughEnabled를 TRUE로 설정하여 구성하는 것이 좋습니다. 인터넷을 통해 액세스할 수 있는 서버는 authPassthroughEnabled를 TRUE로 설정하여 구성해서는 안 됩니다.

프록시 웹 서버가 service-passthrough 플러그인으로 구성되어 있고 authPassthroughEnabled가 TRUE로 설정된 Application Server 8.1 Update 2 인스턴스에 요청을 전달하는 시나리오에서 SSL 클라이언트 인증을 웹 서버 프록시에 사용할 수 있으나 프록시를 거친 Application Server 8.1 Update 2 인스턴스에는 사용할 수 없습니다. 이 경우 프록시를 거친 Application Server 8.1 Update 2 인스턴스는 마치 SSL을 통해 인증된 것처럼 요청을 취급하고 클라이언트의 SSL 인증서를 요청하는 배포된 응용 프로그램에 해당 인증서를 제공합니다.

Web Server

AS 9.1 b50e.Linux.AS LB 설치 후에 시작할 수 없음: libjvm.so:cannot open shared(6572654)

설명

이 문제는 Linux 시스템에서 Application Server 9.1 및 로드 밸런서가 있는 Sun Java System Web Server를 사용하는 경우에만 적용됩니다. 그런 경우 Application Server 및 로드 밸런서를 설치한 후에 libicui18n.so.2libicuuc.so.2가 충돌하여 Web Server 시작에 실패할 수 있습니다. 이 라이브러리는 /opt/sun/private/lib /opt/sun/appserver/lib 모두에 있습니다.

해결 방법

lbplugin이 해당 라이브러리를 기준으로 구성되었기 때문에 /opt/sun/appserver/lib에 있는 올바른 라이브러리를 사용해야 합니다. /opt/sun/private/lib에서 두 개의 라이브러리를 제거하고 나면 Web Server가 오류 없이 시작되어야 합니다.

또는 /opt/sun/private/lib에서 라이브러리를 삭제하지 않으려는 경우 대신 startserv 스크립트에서 LD_LIBRARY_PATH에 있는 /opt/sun/private/lib 앞의 /opt/sun/appserver/lib를 대신 넣을 수 있습니다. 즉, 다음을


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}:
/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib"; export LD_LIBRARY_PATH 

다음으로 대체합니다.


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib:
${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH

웹 서비스

이 절에서는 웹 컨테이너와 관련된 알려진 문제점과 해결 방법을 설명합니다.

Ant 작업 wsimportNoClassDefFoundError를 일으키며 Java EE SDK b33d에서 실패(JDK 1.6 사용)(6527842)

설명

Java EE SDK b33d에 포함된 JDK 1.6으로 JAX—WS 테스트를 실행할 때 문제가 발생할 수 있습니다. 테스트가 다음 메시지를 표시하며 즉시 중단되는 것입니다.


[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \
com/sun/tools/ws/WsImport

이 오류는 webservices-tools.jarcom/sun/tools/ws/WsImport.class, com/sun/tools/ws/ant/WsImport.class com/sun/tools/ws/ant/WsImport2.class가 포함되어 있지 않은 경우에도 발생합니다. 또한 같은 테스트 작업 공간이 1.5.0-10 JDK를 사용했을 땐 문제 없이 작동하기도 합니다.

해결 방법

JAX-WS 테스트를 실행하기 전에 webservices-api.jar$JAVA_HOME/jre/lib/endorsed로 복사합니다.

publish-to-registry 명령이 IFR EE 빌드에서 실패(6602046)

설명

JAXR에서는 SAAJ를 사용하여 SOAP 메시지를 레지스트리에 보냅니다. IFR이 아닌 경우 SAAJ impl 클래스는 lib/webservices-rt.jar 아래에 있습니다. IFR 사례에서 SAAJ 클래스는 아직 lib/webservices-rt.jar 아래에 있습니다. 또한 saaj-impl.jar/usr/share/lib 디렉토리에 있습니다. 이 jar 파일은 Application Server와 webservices-rt.jar에 있는 우선적인 파일에서 선택됩니다. 이 jar 파일에는 SOAP 메시지를 웹 서비스 레지스트리에 보내는 데 필요한 보안 권한이 없습니다. /usr/share/lib 디렉토리의 jar에 권한을 부여하거나 /usr/share/lib jar에 종속되지 않으려면 패키지를 수정해야 합니다.

해결 방법

다음을 server.policy 파일에 추가합니다,


grant codeBase "file:/usr/share/lib/saaj-impl.jar" {
   permission java.security.AllPermission;
};