Sun GlassFish Enterprise Server v2.1.1 릴리스 노트

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

이 장에서는 Sun GlassFish Enterprise Server v2.1.1 소프트웨어의 알려진 문제점과 이를 해결하는 방법에 대해 설명합니다. 문제를 설명하는 부분에서 특정 플랫폼을 언급하지 않는 경우에는 해당 문제가 모든 플랫폼에 적용됩니다.

이 정보는 다음 내용으로 구성되어 있습니다.

Administration

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

Enterprise Server이 클러스터의 하트비트 포트와의 충돌을 감지하지 못함(이슈 번호 1967)

설명

클러스터를 만들 때 Enterprise Server에서는 1026 ~ 45556 사이의 하트비트 포트를 임의로 지정합니다. Enterprise Server 설치 시 만들어진 기본 클러스터인 default-cluster의 경우 0 ~ 45556 사이에서 임의의 번호가 선택됩니다. 클러스터 만들기 프로세스는 다른 서비스에서 하트비트 포트를 이미 사용 중인지 여부를 정확히 감지하지 못합니다.

해결 방법

자동화된 클러스터 만들기 구성에서 해당 포트를 이미 사용 중인 다른 서비스와 충돌하는 하트비트 포트를 선택한 경우, 클러스터 하트비트 포트를 시스템에서 사용하지 않는 포트로 업데이트합니다.

클러스터의 하트비트 포트를 변경하려면 다음 asadmin 명령을 사용합니다.

asadmin set cluster-name.heartbeat-port= newportnumber

도메인 만들기가 64비트 Linux를 실행하는 NFS 서버에서 중지됨(이슈 번호 1961)

설명

NFS 서버가 64비트 Linux에서 실행 중인 상태에서 네트워크 파일 시스템(NFS)을 마운트한 파일 시스템에 도메인을 만들려고 시도하는 동안 asadmin create-domain 명령이 실패할 수 있습니다.

해결 방법

알려진 해결 방법은 없습니다.

거대한 로그 파일을 회전할 때 성능 저하가 발견됨(6718611)

설명

거대한 로그 파일을 회전할 때 응답 시간이 약간 증가했습니다.

해결 방법

로거 설정에서 파일 회전 제한 및 파일 회전 시간 제한 값을 수정하여 성능 저하를 최소화할 수 있습니다. 이러한 등록 정보 값은 응용 프로그램 및 사용자 환경에 따라 달라질 수 있습니다.

IBM MQ에서 일반 RA 리소스 어댑터 배포에 실패함(이슈 6605)

설명

IBM Message Queue 제품에서 일반 RA 어댑터 배포에 실패합니다. server.policy 파일에 부여된 권한은 다음과 같습니다.


grant {
      permission java.util.logging.LoggingPermission "control";
      permission java.util.PropertyPermission "*", "read,write";
      }

해결 방법

다음과 같이 server.policy 파일의 권한을 변경하십시오.


grant codeBase
"file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" {
  permission java.util.logging.LoggingPermission "control";
 };

경우에 따라 독립 실행형 인스턴스가 다른 인스턴스에서 파일을 가져옴(6698604)

설명

실제로 일부 환경에서는 DAS에 설치되어 있고 특정 인스턴스와 동기화될 예정인 파일이 추가 인스턴스로 전송됩니다.

해결 방법

알려진 해결 방법은 없습니다.

start-cluster 명령의 시작 메시지가 너무 자세함(6728317)

설명

asadmin start-cluster 명령은 시작하는 동안 중요하지 않은 구성 요소가 실패한 경우에도 너무 많은 메시지를 표시합니다. 클러스터의 인스턴스에 관련된 중요하지 않은 요소가 실패한 경우 다음 예의 명령 출력을 참조하십시오.


./asadmin start-cluster --port 9898 cluster1
Please enter the admin user name>admin
Please enter the admin password>
The clustered instance, instance2, was successfully started.
error 0 [#|2008-07-17T14:58:16.496+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 1 [#|2008-07-17T14:58:17.517+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 2 [#|2008-07-17T14:58:30.596+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=5954a044-df06-4a3e-902a-0c40b4b6cddb;
|EJB5108:Unable to initialize EJB Timer Service. 
The likely cause is the database has not been 
started or the timer database table has not been created.|#]


error 3 [#|2008-07-17T14:58:32.512+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main;
__CallFlowPool;_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|
RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


The clustered instance, instance1, was successfully started.
error 0 [#|2008-07-17T14:58:21.117+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=30827d9a-72ac-4854-b216-06494b6a9fb5;
|EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has 
not been started or the timer database table has not been created.|#]


error 1 [#|2008-07-17T14:58:23.106+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|
_ThreadID=10;_ThreadName=main;__CallFlowPool;
_RequestID=b41d76fa-0203-49f7-a2ae-83bf242d3e7a;
|RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


Command start-cluster executed successfully.

해결 방법

알려진 해결 방법은 없습니다. 이러한 예외 메시지는 무시할 수 있습니다.

IBM MQ에서 일반 RA 리소스 어댑터 배포에 실패함(이슈 6605)

설명

IBM Message Queue 제품에서 일반 RA 어댑터 배포에 실패합니다. server.policy 파일에 부여된 권한은 다음과 같습니다.


grant {
      permission java.util.logging.LoggingPermission "control";
      permission java.util.PropertyPermission "*", "read,write";
      }

해결 방법

다음과 같이 server.policy 파일의 권한을 변경하십시오.


grant codeBase
"file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" {
  permission java.util.logging.LoggingPermission "control";
 };

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

설명

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

해결 방법

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

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

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

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

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

설명

J2SE 1.4.x, 5.0 이상을 서버에서 구성할 수 있습니다. 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 서버가 가상 시스템 내에서 시작됩니다. 이로 인한 원하지 않는 부작용으로 관리 기능이 역으로 영향을 받고 관리 콘솔과 명령줄 인터페이스에서 예기치 못한 결과가 발생할 수 있습니다. 문제는 내장된 jmx-connector 서버와 새 jmx-connector 서버 간에 충돌이 발생하는 것입니다.

해결 방법

jconsole(또는 다른 JMX 호환 클라이언트)을 사용할 경우 서버 시작과 함께 시작되는 표준 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 GlassFish Enterprise Server v2.1.1 Administration Guide를 참조하십시오.

웹 서비스의 종점 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로 노출된 웹 서비스의 컨텍스트 루트 이름과 바꿉니다.

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

설명

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

해결 방법

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

설명

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

해결 방법

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


주 –

REMOTE 모드를 사용하면 모든 인스턴스가 한 브로커(DAS)를 사용하기 때문에 Enterprise 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로 변경하여 클러스터 구성을 수정합니다.


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


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


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/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

해결 방법

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

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

설명

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

해결 방법

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

create-domain 명령이 AIX의 사용자 정의 비밀번호에서 실패(6628170)

설명

AIX 운영 체제에서 사용자 정의 마스터 비밀번호로 도메인을 만드는 시도가 다음 오류와 함께 실패합니다.


keytool error (likely untranslated): java.lang.NullPointerException
 Enter keystore password:  New keystore password:

Procedure해결 방법: (AIX) 사용자 정의 마스터 비밀번호로 도메인을 생성하려면


주 –

다음 절차에서는 각 단계에 필요한 옵션만 제공됩니다. 명령에 대한 추가 옵션이 필요한 경우 명령에 이러한 옵션을 지정합니다. Enterprise Server 명령에 대한 자세한 내용은 Sun GlassFish Enterprise Server v2.1.1 Reference Manual 을 참조하십시오.


  1. 다음 코드 줄이 포함된 쉘 스크립트를 만듭니다.

    #!/bin/sh
    changeKeystorePass() {
      keytool -storepasswd -keystore ${KEYSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeTruststorePass() {
      keytool -storepasswd -keystore ${TRUSTSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeKeyPass() {
      keytool -keypasswd -alias s1as -keystore ${KEYSTORE} -storepass ${NEW} -keypass ${OLD} -new ${NEW}
    }
    changeDomainPasswordEntry() {
      keytool -storepasswd -storetype JCEKS -keystore ${DOMAINPASSWORDS} -storepass ${OLD} -new ${NEW}
    }
    deleteMasterPasswordFile() {
      if [ -f ${DOMAIN_PATH}/master-password ] ; then
        echo Deleting ${DOMAIN_PATH}/master-password
        rm -f ${DOMAIN_PATH}/master-password
      fi
    }
    DOMAIN_PATH=$1
    OLD=$2
    NEW=$3
    if [ $# != 3 ] ; then
      echo Usage: $0 domain-path old-master-pass new-master-pass
      exit 1
    fi
    echo Processing ...
    if [ ! -f ${DOMAIN_PATH}/config/domain.xml ] ; then
      echo "Domain with folder ${DOMAIN_PATH} does not exist, create it first"
      exit 2
    else
      KEYSTORE=${DOMAIN_PATH}/config/keystore.jks
      TRUSTSTORE=${DOMAIN_PATH}/config/cacerts.jks
      DOMAINPASSWORDS=${DOMAIN_PATH}/config/domain-passwords
      changeKeystorePass
      changeTruststorePass
      changeKeyPass
      changeDomainPasswordEntry
      deleteMasterPasswordFile
    fi
  2. 기본 마스터 비밀번호를 지정하여 도메인을 만듭니다.


    aadmin create-domain {--adminport aminportno|--portbase portbase} domain-name
    Please enter the admin user name>admin-user
    Please enter the admin password>admin-user-password
    Please enter the admin password again>admin-user-password
    Please enter the master password [Enter to accept the default]:>
    Please enter the master password again [Enter to accept the default]:>

    기본 마스터 비밀번호는 changeit입니다.

  3. 방금 만든 도메인의 마스터 비밀번호를 변경합니다.

    마스터 비밀번호를 변경하려면 단계 1에서 만든 스크립트를 실행합니다.


    script-name domain-path old-password new-password
    
  4. 단계 2에서 만든 도메인을 시작합니다.


    asadmin start-domain domain-name
    

    도메인에 사용자 정의 마스터 비밀번호가 있으므로 마스터 비밀번호를 입력하라는 메시지가 표시됩니다.

  5. 프롬프트에 대한 응답으로 새 마스터 비밀번호를 입력합니다.

  6. 클러스터를 지원하도록 구성된 도메인의 경우 노드 에이전트를 만들고 시작합니다.

    1. 단계 2에서 만든 도메인의 노드 에이전트를 만듭니다.


      asadmin create-node-agent --port portno --user admin-user
      
    2. 단계 a에서 만든 노드 에이전트를 시작합니다.


      asadmin start-node-agent
      

      도메인에 사용자 정의 마스터 비밀번호가 있으므로 마스터 비밀번호를 입력하라는 메시지가 표시됩니다.

    3. 프롬프트에 대한 응답으로 새 마스터 비밀번호를 입력합니다.

참조

Enterprise Server 설명서 페이지

AIX: 0403-027 매개 변수 목록이 너무 김(6625591)

설명

AIX 운영 체제에서 일부 OS 관련 작업은 다음 오류와 함께 실패합니다.


0403-027 The parameter list is too long

OS 관련 작업의 예로는 응용 프로그램 배포나 응용 프로그램 클라이언트 컨테이너 실행이 있습니다.

이 문제는 일반적으로 CLASSPATH 환경 변수의 긴 파일 경로로 인해 발생합니다.

해결 방법

다음 해결 방법 중 하나를 사용합니다.

Procedure(AIX) 최대 명령줄 길이를 늘리려면

ncargs 속성은 환경 변수를 포함한 최대 명령줄 길이를 결정합니다. AIX 운영 체제에서 ncargs 속성의 기본값은 4KB 블록 4개입니다. Enterprise Server 명령이 최대 명령줄 길이를 초과하지 않게 하려면 이 값을 4KB 블록 16개로 늘립니다.


주 –

ncargs 속성 값을 변경한 후 데몬을 재부트하거나 새로 고칠 필요가 없습니다.


  1. ncargs 속성 값을 결정합니다.


    lsattr -EH -l sys0 | grep ncargs
    
  2. ncargs 속성 값이 4KB 블록 16개보다 작으면 값을 16으로 늘립니다.


    chdev -l sys0 -a ncargs=16
    

Apache 및 로드 밸런서 플러그인

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

EJB가 포함된 Java EE 응용 프로그램을 웹 서비스로 배포하면 로드 균형 조정 플러그인에서 캡처되지 않음(이슈 685)

설명

서블릿 기반의 웹 서비스를 통해 WAR(또는 EAR)을 배포하는 경우 HTTP 로드 밸런서에서 웹 서비스에 대한 정보가 업데이트 됩니다. EJB 기반의 웹 서비스를 배포하는 경우 HTTP 로드 밸런서의 구성이 새로운 객체를 반영하도록 업데이트되지 않습니다.

해결 방법

로드 밸런서 구성 파일(loadbalancer.xml)에 이러한 컨텍스트 루트를 수동으로 추가하십시오. 하지만, 자동 적용 기능을 사용하여 로드 밸런서 구성을 동적으로 재구성하면 이전에 수동으로 편집한 내용이 손실될 수 있습니다.

DAS에서 자동 적용 기능을 해제하고 수동 내보내기 기능을 대신 사용하여 로드 밸런서 구성을 편집하고 웹 서버에 적용합니다.

고가용성 관리 설명서에 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가 호출되기 전에 선택기 래핑을 해제하는 해결 방법이 Enterprise Server 2.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 GlassFish Enterprise Server v2.1.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 GlassFish Enterprise Server v2.1.1 Administration Guide를 참조하십시오.

시스템을 재부팅하거나 서버를 시작한 후 Java DB가 시작되지 않음(6515124)

설명

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

해결 방법

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


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

asadmin 명령 옵션에 대한 자세한 내용은 Sun GlassFish Enterprise Server v2.1.1 Quick Start GuideSun GlassFish Enterprise Server v2.1.1 Quick Start GuideAdministration Tools를 참조하십시오.

배포

경우에 따라 자동 배포가 클러스터에서 실패함(6610527)

설명

타이밍 문제로 인해 클러스터를 지원하도록 구성된 도메인에서 자동 배포가 실패하는 경우가 있습니다. 이 문제는 클러스터를 지원하지 않는 도메인에서 발견되지 않습니다.

해결 방법

다음 해결 방법 중 하나를 사용합니다.

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

설명

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

해결 방법

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

응용 프로그램 특정 클래스 로더가 JSP 컴파일에서 사용되지 않음(6693246)

설명

응용 프로그램 특정 클래스 로더(applibs 또는 --libraries)가 JPS 컴파일에서 사용되지 않습니다. 따라서 이러한 JAR을 참조하는 JSP가 컴파일되지 않습니다.

해결 방법

알려진 해결 방법은 없습니다.

설명서

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

Javadoc 불일치(다양한 ID)

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

EJB

HandlerChain에서 자원 삽입이 수행되지 않음(6750245)

설명

EJB 초기화 순서로 인해 HandlerChain에서 자원 삽입이 수행되지 않습니다.

해결 방법

알려진 해결 방법은 없습니다.

고가용성

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

로드 밸런서 플러그인 상태 검사에서 많은 수의 연결/연결 끊김을 백그라운드(로드)에 생성함(6453946)

설명

로드 밸런서 플러그인 상태 검사에서 많은 수의 연결/연결 끊김을 백그라운드(로드)에 생성합니다. 상태 검사를 위해 runDaemonMonitor 스레드는 모든 Application Server 수신기에 대해 연결/연결 끊김을 수행합니다. 이로 인해 Enterprise Server에서의 연결이 포화 상태가 될 수 있습니다.

해결 방법

새로운 속성인 monitor-interval-in-secondsloadbalancer.xml 파일용으로 개발되었습니다. 이 속성을 사용하여 로드 밸런서 플러그인에 수백개의 수신기가 구성된 경우 연결/연결 끊김 이벤트 사이에 일시 중지를 삽입할 수 있습니다. 기본 일시 중지 값은 0입니다.

이중 네트워크에 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)가 모든 참여 호스트에서 동일한지 확인합니다.

hadbm 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 실패" 예외와 함께 관리 에이전트가 종료됨(6232140)

설명

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

해결 방법

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.DLLZLIB.DLLas-install/lib에 없음(6572184)

설명

Windows IIS 6에서 로드 밸런서가 작동하려면SASL32.DLLZLIB.DLL 파일이 필요합니다. 현재 이 파일이 as-install/lib에 없습니다.

해결 방법

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


http://download.java.net/javaee5/external/OS/aslb/jars/

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

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

설명

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

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

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

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

해결 방법

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

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

설명

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

해결 방법

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

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

설명

Solaris에 Apache용 Enterprise 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에 Enterprise Server v2.1.1을 설치한 후에 Enterprise 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 시스템의 경우 Enterprise Server IFR이 있는 JES 5 UR1에서 Registry Server를 설치할 수는 없습니다. 다음 JES5 UR1 배포 디렉토리에서 pkgadd 명령을 사용하여 수동으로 Registry Server 패키지를 설치해야 합니다.


path/OS/Products/registry-svr/Packages

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

설명

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

해결 방법

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

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

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

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

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

설치

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

설치 프로그램 장식 이미지에 기존 제품 버전이 표시됨(6862674)

설명

설치 프로그램 왼쪽의 이미지에 v2.1.1 대신 기존 제품 버전이 표시됩니다.

해결 방법

없음

start-domain 명령이 OpenSolaris 2008.11에서 시간 초과됨(6820169 및 6741572)

설명

OpenSolaris 2008.11에서 asadmin start-domain 명령을 사용하여 도메인을 시작하려 할 때 다음과 같은 오류 메시지가 표시됩니다.


Timeout waiting for domain domain1 to go to starting state.
CLI156 Could not start the domain domain1.

해결 방법

도메인이 성공적으로 시작되었습니다. 시스템을 다시 부팅한 후 시간 및 날짜를 수정합니다.

64비트 JDK를 사용한 설치에 실패함(6796171)

설명

64비트 JDK가 있는 64비트 시스템에서 설치할 경우 설치 프로그램에서 64비트 JDK를 사용하려 하기 때문에 설치에 실패합니다.

해결 방법

64비트 시스템에서 Sun GlassFish Enterprise Server를 설치하는 경우 32비트 JDK를 다운로드하고 이를 사용하여 64비트 시스템에서 Sun GlassFish Enterprise Server를 설치합니다. 다음 명령을 사용해야 합니다. ./distribution_filename —javahome path to 32–bit JDK location

설치가 완료되면 Sun GlassFish Enterprise Server에서 64비트 JDK를 사용하도록 하기 위해 AS_JAVA 변수 값을 asenv.conf 파일에서 편집하여 64비트 JDK 설치를 가리키도록 합니다.

Linux에서 Enterprise Server 설치 프로그램이 충돌함(6739013)

설명

이 문제는 환경 변수 MALLOC_CHECK_를 2로 설정한 상태에서 Linux를 실행하는 시스템에서 발견되었습니다.

해결 방법

환경 변수 MALLOC_CHECK_를 0으로 설정합니다. 다음 명령 중 하나를 실행합니다.

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

설명

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

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

해결 방법

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


file://as-install/docs-ee/about.html

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

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

설명

Windows에서 설치 직후 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

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

설명

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

해결 방법

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


주 –

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


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

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

설명

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

해결 방법

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

  1. 하나는 Enterprise Server 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 설치의 구성 요소를 모두 전역 영역에 설치합니다. 이 작업에서는 GZ에 있는 MQ의 버전을 확인한 다음 필요한 경우 Enterprise Server IFR에 번들로 제공되는 버전으로 업그레이드합니다. 샘플 응용 프로그램 구성 요소를 선택하여 설치하기만 해도 MQ가 IFR 버전으로 업그레이드됩니다.

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

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

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

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

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

설명

Enterprise Server IFR 설치 프로그램을 -console 옵션(명령줄 모드)으로 실행하면 다음 메시지가 표시됩니다.


Do you want to upgrade from previous Application Server version?

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

해결 방법

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

업그레이드 후 도메인이 시작될 때 로그에 다음 예외가 나타남 (6774663)

설명

다음 예외가 발생할 수 있습니다.

#|2008-11-19T01:44:37.422+0530|SEVERE|sun-appserver9.1|org.apache.catalina.session.ManagerBase|_ThreadID=17;_ThreadName=pool-1-thread-3;_Req uestID=cc0ddf54-a42e-400a-9788-e30d79a25d88;|PWC2768: IOException while loading persisted sessions: java.io.InvalidClassException: org.apache .catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 8647852380089530442, local class serialVersi onUID = -8515037662877107054 java.io.InvalidClassException: org.apache.catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 864 7852380089530442, local class serialVersionUID = -8515037662877107054..... .....

해결 방법

업그레이드가 완료되고 업그레이드 도메인이 시작된 후 이 예외가 발생하는 경우 무시할 수 있습니다.

Java EE Tutorial

관리 콘솔을 사용하여 자원을 만들 때 대상 탭을 사용하여 서버를 대상으로 지정합니다. 명령줄 또는 asant 대상을 사용하는 경우에는 서버가 기본 대상이며 더 이상의 조치가 필요하지 않습니다.

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))

GenerationType.IDENTITY 및 SyBase에서의 DataDirect 드라이버(이슈 트랙커 2431)

설명

DataDirect 드라이버가 SyBase에서 사용될 경우 GenerationType.IDENTITY를 사용하는 엔티티를 삽입하려는 시도가 실패합니다. DataDirect 드라이버가 모든 매개 변수화된 준비된 명령문에 대해 저장 프로시저를 생성하기 때문에 시도가 실패합니다.

해결 방법

domain.xml 파일에서 해당 데이터 소스에 대해 PrepareMethod=direct 등록 정보를 설정합니다.

라이프사이클 관리

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

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와 같거나 그보다 크게 설정해야 합니다. 문제는 서버에서 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 물리적 대상을 보려고 하면 오류 메시지가 표시됩니다.

해결 방법

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

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

설명

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

해결 방법

이 문제를 해결하는 방법에는 두 가지가 있습니다.

로깅

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

access,failure의 디버그 명령문을 설정하면 서버 시작이 중단됨(6180095)

설명

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


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

해결 방법

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

Message Queue

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

MQ 브로커가 시작되지 않으면 Enterprise Server가 시작되지 않음(6740797)

설명

JMS를 REMOTE로 구성하면 MQ 브로커가 시작되지 않은 경우 Enterprise Server도 시작할 수 없습니다.

해결 방법

다음 JVM 옵션을 다음과 같이 설정합니다. com.sun.enterprise.jms.CONNECT_MQ_LAZILY=true . JVM 옵션을 설정했으면 MQ 브로커가 시작되지 않은 경우 Enterprise Server를 시작할 수 있습니다. 그러나 서버를 시작하기 전에 MQ를 시작하는 것이 좋습니다.

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

설명

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

해결 방법

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

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

설명

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

해결 방법

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

imqjmsra.jar가 업그레이드 전에 로드되는 경우 일치하지 않는 이전 클래스 및 새 클래스가 생성됨(6740794)

설명

서버가 시작되는 동안 해당 서버에서는 Message Queue 버전을 확인합니다. Message Queue 버전이 잘못된 경우 서버에서 imqjmsra.jar를 사용하여 업그레이드합니다. 이러한 업그레이드 JAR 및 관련 클래스는 다음에 다시 시작할 때까지 서버에서 사용할 수 없습니다. 이 문제는 Message Queue가 단독으로 업그레이드되거나 Application Server가 단독으로 패치되는 경우에만 발생합니다. 이에 대한 부작용으로 간혹 서버가 시작되지 않습니다.

해결 방법

Message Queue와 Enterprise Server를 동일한 패치 수준으로 유지 관리하거나 서버를 다시 시작해야 합니다.

모니터링

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

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

설명

HTTP 서비스의 일부 요소에 대한 모니터링 통계를 볼 경우 표시된 일부 값이 현재 값에 해당하지 않거나 항상 0으로 표시됩니다. 특히, 다음 HTTP 서비스 통계는 Enterprise Server에 해당하는 정보를 표시하지 않으므로 무시해야 합니다.

해결 방법

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

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

설명

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

해결 방법

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

패키지화

이 절에서는 Enterprise Server 제품의 소프트웨어 코드 패키지화와 관련된 알려진 문제와 해결 방법에 대해 설명합니다.

AIX: monitor 명령이 AIX에서 작동하지 않음(6655731)

설명

libcliutil.so 라이브러리 파일이 Enterprise Server에서 패키지화되지 않았기 때문에 AIX 운영 체제에서 monitor 명령을 실행할 수 없습니다.

Procedure해결 방법: 누락된 libcliutil.so 라이브러리 파일을 설치하려면

  1. 에서 JAR 파일을 다운로드 하십시오.

  2. appserv-native-9.1.1-b16a.jar 파일을 다운로드한 디렉토리로 변경합니다.


    prompt% cd destination-dir
    
  3. appserv-native-9.1.1-b16a.jar 파일의 내용을 추출합니다.


    prompt% jar xf appserv-native-9.1.1-b16a.jar
    
  4. libcliutil.so 파일을 as-install/lib 디렉토리에 복사합니다.


    prompt% cp libcliutil.so as-install/lib
    

샘플

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

설치 로그가 샘플 설치 실패를 표시(6802286)

설명

Sun GlassFish Enterprise Server를 설치한 후에 설치 로그 파일이 일부 샘플 파일이 만들어지지 않은 것을 보여줍니다.

해결 방법

알려진 해결 방법은 없습니다. 이 문제는 기본 샘플 기능에는 영향을 주지 않습니다.

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

설명

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

이 버그는 JES5 버그 6472173에서 이미 발견된 문제를 설명합니다. 버그 6472173에 대한 해결 방법은 http://docs.sun.com의 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

보안

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

v2.1.1에 번들된 CA 인증서가 만료되었습니다.

설명

Sun GlassFish Enterprise Server v2.1.1에 번들된 CA 인증서는 2010년 1월 8일 이후로 만료되었습니다. 따라서 도메인을 시작하는 동안 일부 SEVERE 메시지가 관찰될 수 있습니다.

해결 방법

키 저장소에서 만료된 인증서를 제거하십시오. JKS 키 저장소에서 인증서를 제거하려면 다음 명령을 사용하십시오.

keytool delete -alias verisignserverca -keystore domain-dir /config/cacerts.jks

NSS 키 저장소에서 인증서를 제거하려면 다음 명령을 사용하십시오.

certutil -D -n verisignserverca -d domain-dir/config

과도한 스트레스 하에 SSL 시나리오에 OutOfMemoryError가 발생함(JDK 6 이슈 23)

설명

JDK6 Sun PKCS11 공급자에 있는 JDK 버그(https://jdk6.dev.java.net/issues/show_bug.cgi?id=23 참조)는 과도한 스트레스 하에 특정 SSL 시나리오를 실행하는 경우 OutOfMemoryError를 일으킬 수 있습니다.

해결 방법

이 문제가 발생하면 sun.security.pkcs11.SunPKCS11 공급자를 JRE 설치 경로에 있는 java.security 파일에서 제거하십시오.

AIX: 서버측 인증 검증 오류로 인해 WSS 동적 암호화 키가 실패함(6627379)

설명

AIX 플랫폼에서 응답에 대해 암호화 키를 결정하기 위한 동적 암호화가 실패합니다. 실패는 서버측에서 인증을 검증하는 동안 발생합니다.

실패에 대한 응답으로 서버 로그 파일 server.log에 다음 오류 메시지가 기록됩니다.


Unable to validate certificate

Error occurred while resolving key information
com.sun.xml.wss.impl.WssSoapFaultException: Certificate validation failed

해결 방법

Enterprise Server 2.1.1에 Metro 1.1을 설치합니다.

AIX: EJB의 @RunAs 모듈 인증 테스트가 실패함 AccessLocalException: 클라이언트가 인증되지 않음(6627385)

설명

run-as 또는 전파된 보안 ID가 @RunAs 주석으로 정의된 엔터프라이즈 빈의 메소드가 다른 엔터프라이즈 빈의 메소드를 호출하려고 합니다. run-as 기본이 sun-ejb-jar.xml 배포 설명자 파일에 정의되어 있지 않으면 시도가 javax.ejb.AccessLocalException 예외와 함께 실패합니다.


javax.ejb.AccessLocalException: Client not authorized for this invocation.

해결 방법

sun-ejb-jar.xml 배포 설명자 파일에서 principal-name 요소에 run-as 역할이 지정한 대상 기본 이름을 정의합니다.

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

설명

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

해결 방법

하드웨어 로드 밸런서와 Enterprise 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

이 문제는 GlassFish 사이트(https://glassfish.dev.java.net/issues/show_bug.cgi?id=849)에 설명되어 있습니다.

해결 방법

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

업그레이드

이 절에서는 알려진 업그레이드 문제 및 해결 방법을 설명합니다.

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

설명

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

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

해결 방법

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

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

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


    as-install/bin/asupgrade --source as-install/domains --target 
    as-install --adminuser adminuser --adminpassword adminpassword 
    --masterpassword changeit

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

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


    file://as-install/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>

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

설명

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

해결 방법

이 버그는 8.0 PE에서 Enterprise Server로 업그레이드하는 동안에만 발생합니다. 해결 방법은 8.1, 8.2 또는 9.0으로 업그레이드한 다음 Enterprise Server로 업그레이드합니다.

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

설명

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

해결 방법

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

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

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

설명

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

해결 방법

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

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

설명

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

해결 방법

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

여러 도메인을 역순으로 업그레이드할 때 업그레이드 도구가 nodeagents 디렉토리를 삭제함(6636871)

설명

여러 도메인이 포함된 구성의 단계별 업그레이드 후에 마지막 처리된 도메인의 노드 에이전트만 있습니다. 이 문제는 업그레이드 도구가 도메인을 처리할 때마다 대상에서 nodeagents 디렉토리를 제거하고 다시 만들기 때문입니다.

Procedure해결 방법: 여러 도메인의 단계별 업그레이드에서 모든 노드 에이전트를 보존하려면

  1. 각 도메인을 처리한 후 nodeagents 디렉토리의 zip 파일을 만듭니다.

  2. 모든 도메인이 처리되고 나면 만든 파일을 압축 해제합니다.

    이제 모든 노드 에이전트가 있어야 합니다.

인플레이스(In-place) 업그레이드를 수행할 때 기존 도메인의 index.html 파일이 업데이트되지 않음(6831429)

설명

인플레이스(In-place) 업그레이드를 수행하는 동안 이미 존재하는 도메인의 index.html 파일은 교체되지 않습니다. 여전히 서버의 기존 버전이 표시될 수 있습니다. 이 index.html 파일은 SGES_BASEindex.html 파일로 교체될 수 있습니다.


SGES_BASE/lib/install/templates/ee/index.html DOMAIN_DIR/docroot/index.html

웹 컨테이너

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

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 컴파일을 위한 새로운 프로세스를 생성하지 못하도록 합니다.

Enterprise Server가 auth-passthrough Web Server 6.1 Add-On을 지원하지 않음(6188932)

설명

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

Enterprise 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 인스턴스에서 요청을 직접 받은 것처럼 수행됩니다.

Enterprise Server 2.1.1에서 auth-passthrough 기능은 다음과 같이 domain.xml<http-service> 요소의 authPassthroughEnabled 등록 정보를 TRUE로 설정하여 사용할 수 있습니다.


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

Application Server Enterprise Edition 7.1에서의 auth-passthrough 플러그인 기능의 보안 고려 사항이 Enterprise Server 2.1.1의 authPassthroughEnabled 등록 정보에도 동일하게 적용됩니다. authPassthroughEnabled는 인증 목적으로 사용될 수 있는 정보(예: 요청이 발생한 IP 주소 또는 SSL 클라이언트 인증서)를 대체할 수 있게 하므로 authPassthroughEnabled가 TRUE로 설정된 Enterprise Server 2.1.1 인스턴스에 트러스트된 클라이언트나 서버만 연결할 수 있도록 해야 합니다. 더욱 주의하는 의미에서 회사 방화벽 뒤의 서버에서만 authPassthroughEnabled를 TRUE로 설정하여 구성하는 것이 좋습니다. 인터넷을 통해 액세스할 수 있는 서버는 authPassthroughEnabled를 TRUE로 설정하여 구성해서는 안 됩니다.

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

Web Server

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

설명

이 문제는 Linux 시스템에서 Enterprise Server 및 로드 밸런서가 있는 Sun GlassFish Web Server를 사용하는 경우에만 적용됩니다. 그런 경우 Enterprise 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에서 라이브러리를 삭제하지 않으려는 경우 대신 Web Server 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 파일은 Enterprise 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;
};

wscompile이 JDK6 u4 b3에서 "package javax.xml.rpc does not exist"라는 메시지와 함께 실패함(6638567)

설명

JDK 6 Update 4에 대해 wscompile ant 작업이 실패합니다. 각 JAX-RPC API 클래스의 경우 다음 오류 메시지가 표시됩니다.


package package-name does not exist

해결 방법

wscompile ant 작업을 실행하기 전에 클래스 경로에 j2ee.jar아니라 javaee.jar이 지정되어 있는지 확인합니다.