Versionshinweise zu Sun GlassFish Communications Server 2.0

Kapitel 4 Sun GlassFish Enterprise Server - Bekannte Probleme und Einschränkungen

In diesem Kapitel werden bekannte Probleme und dazugehörige Lösungen für die Sun GlassFish Enterprise Server 2.1.1-Software beschrieben. Diese Probleme betreffen auch speziell Communications Server, der auf der Grundlage von Sun GlassFish Enterprise Server 2.1 erstellt wurde. Wenn für ein Problem keine spezielle Plattform genannt wird, bezieht es sich auf alle Plattformen. Die hier gegebenen Informationen sind wie folgt unterteilt:

Administration

In diesem Abschnitt werden bekannte Verwaltungsprobleme sowie ihre Lösungen beschrieben.

Communications Server erkennt keine Probleme mit dem Heartbeat-Port eines Clusters (Problem 1967)

Beschreibung

Bei der Erstellung eines Clusters weist Communications Server einen zufälligen Heartbeat-Port zwischen 1026 und 45556 zu. Bei·default-cluster, dem von einer Communications Server-Installation erstellten Standard-Cluster, wird eine Zufallszahl zwischen 0 und 45556 gewählt. Bei der Cluster-Erstellung wird nicht präzise erkannt, ob der Heartbeat-Port bereits von einem anderen Dienst verwendet wird.

Lösung

Wenn bei der automatisierten Cluster-Erstellungskonfiguration ein Heartbeat-Port gewählt wird, der im Konflikt zu einem anderen Dienst steht, der bereits diesen Port verwendet, aktualisieren Sie den Heartbeat-Port des Clusters in einen Port, der nicht vom System verwendet wird.

Um den Heartbeat-Port eines Clusters zu ändern, verwenden Sie den folgenden asadmin-Befehl:

asadmin set Cluster-Name.heartbeat-port= neuePortNummer

Domänenerstellung stoppt auf NFS-Server, der 64-Bit-Linux ausführt (Problem 1961)

Beschreibung

Der Befehl asadmin create-domain kann während des Versuchs, eine Domäne in einem von NFS eingehängten Dateisystem (Network File System, NFS = Netzwerkdateisystem) mit einem 64-Bit-Linux ausführenden NFS-Server zu erstellen, fehlschlagen.

Lösung

Keine bekannte Lösung.

Beobachteter Leistungsabfall beim Rotieren einer großen Protokolldatei (Problem 6718611)

Beschreibung

Beim Rotieren einer großen Protokolldatei wird eine leichte Heraufsetzung der Antwortzeit beobachtet.

Lösung

Der Leistungsabfall kann minimiert werden, indem die Werte für "Dateirotationslimit" und "Dateirotationszeitlimit" in den Einstellungen der Protokollfunktion geändert werden. Die Werte für diese Eigenschaften hängen von Ihrer Anwendung und Umgebung ab.

Generic RA Resource Adapter konnte nicht für IBM MQ bereitgestellt werden (Problem 6605)

Beschreibung

Die Bereitstellung eines generischen RA-Adapters für IBM Message Queue schlägt fehl. In der Datei server.policy werden folgende Berechtigungen gewährt.


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

Lösung

Ändern Sie die Berechtigungen in der Datei server.policy wie folgt:


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

Standalone-Instanzen erhalten gelegentlich Dateien von anderen Instanzen (6698604).

Beschreibung

Unter bestimmten Bedingungen werden Dateien, die auf DAS installiert sind und die mit einer bestimmten Instanz synchronisiert werden sollen, an weitere Instanzen gesendet.

Lösung

Keine bekannte Lösung.

Die Startmeldung des Befehls start-cluster ist zu ausführlich.

Beschreibung

Der Befehl asadmin start-cluster zeigt zu viele Meldungen an, auch wenn nicht kritische Komponenten während des Startens ausfallen. Beachten Sie das folgende Beispiel einer Befehlsausgabe, wenn nicht kritische Elemente (bezogen auf die Instanzen im Cluster) ausfallen:


./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.

Lösung

Keine bekannte Lösung. Diese Meldungen (Ausnahmen) können ignoriert werden.

Das Skript package-appclient funktioniert nicht, wenn domain1 nicht vorhanden ist (6171458)

Beschreibung

Standardmäßig befindet sich hartcodierter Wert in as-install/lib/package-appclient.xml , der für die Variable AS_ACC_CONFIG für domain1 gilt, auf die asenv.conf verweist. Wenn domain1 gelöscht und eine neue Domäne erstellt wird, wird die AS_ACC_CONFIG-Variable nicht entsprechend der neuen Domäne aktualisiert, sodass die Ausführung des package-appclient-Skripts fehlschlägt.

Lösung

Gehen Sie folgendermaßen vor:

  1. Entfernen Sie domain1 nicht und erstellen Sie die anderen Domänen um diese Domäne herum.

  2. Entfernen Sie domain1, und ersetzen Sie den hartcodierten Wert für domain1 in as-install/lib/package-appclient.xml durch den neuen Domänennamen.

Diesen Vorgang müssen Sie für jede neu erstellte Domäne durchführen, wenn domain1 nicht mehr vorhanden ist.

Das Starten von Application Server mit einem zusätzlichen JMX-Agenten wird nicht unterstützt (6200011)

Beschreibung

J2SE 1.4.x, 5.0 oder höher kann für die Ausführung mit Application Server konfiguriert werden. In J2SE 5.0 ermöglicht eine plattformeigene Funktion das Starten eines JMX-Agenten. Um diese Funktion zu aktivieren, setzen Sie die entsprechenden Systemeigenschaften für den Serverstart fest.

Zu den möglichen Werten gehören:


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"

Nachdem Sie die JMX-Eigenschaften konfiguriert und den Server gestartet haben, wird ein neuer jmx-connector-Server in der Virtual Machine von Application Server gestartet. Ein unerwünschter Nebeneffekt davon besteht darin, dass die Administrationsfunktionen beeinträchtigt werden und die Application Server-Administrationskonsole und Befehlszeilenschnittstelle evtl. unerwünschte Ergebnisse produzieren. Dieses Problem wird durch Konflikte zwischen dem integriertenjmx-connector-Server und dem neuen jmx-connector-Server verursacht.

Lösung

Wenn Sie jconsole (oder einen anderen JMX-kompatiblen Client) verwenden, können Sie den standardmäßig beim Start von Application Server gestarteten JMX-Konnektor-Server wiederverwenden.

Beim Starten des Servers wird eine Zeile ähnlich der unten dargestellten Zeile auf dem Server angezeigt. Sie können eine Verbindung zur dort angegebenen JMXService-URL herstellen und dieselben Management-/Konfigurationsoperationen durchführen, nachdem Sie die Anmeldeinformationen erfolgreich angegeben haben, beispielsweise:


[#|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.|#]

Die Datei .asadmintruststore wird in der Dokumentation nicht beschrieben (6315957)

Beschreibung

Die Datei .asadmintruststore wird in der Dokumentation nicht beschrieben. Falls diese Datei nicht im home-Verzeichnis des Serveradministrators vorhanden ist, können schwerwiegende Fehler beim Upgrade bestimmter, auf dem Server gehosteter Anwendungen auftreten.

Lösung

Cluster-Instanzen werden aufgrund einer Zeitüberschreitung beim Herstellen der Verbindung mit dem JMS-Broker nicht gestartet (6523663)

Beschreibung

Der standardmäßige MQ-Integrationsmodus für eine Communications Server-Cluster-Instanz lautet LOCAL. Wenn Communications Server in einem Verzeichnis (PATH) installiert wird, das lang (also "nicht kurz") ist, stürzt imqbrokerscv.exe beim Starten der Cluster-Instanz ab. Das Problem wird durch die Speicherzuweisung in imqbrokersvc verursacht.

Lösung

Der JMS-Diensttyp für die Cluster-Instanz muss vom Standardwert LOCAL in REMOTE geändert werden. In dieser Konfiguration zeigen alle Instanzen auf den DAS-Broker. Befolgen Sie die unten stehenden Anweisungen zum Konfigurieren eines Clusters im REMOTE-Modus.


Hinweis –

Bei Auswahl des REMOTE-Modus verwenden alle Instanzen einen Broker (DAS), sodass beim Start des Communications Server-Clusters kein Broker-Cluster erstellt wird. Weitere Informationen finden Sie in “Auto-clustering” in Abschnitt 4.1, Absatz iii in der Übersicht auf http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt. Die oben stehende Funktionalität ist nicht verfügbar!


ProcedureVerwenden der Befehlszeile

Bevor Sie beginnen

Ändern Sie den Port und die Passwortdatei gemäß Ihrer Umgebung. Beachten Sie, dass im unten stehenden Beispiel der Clustername racluster, der DAS-Admin-Port 5858 und der DAS JMS-Port 7676 lautet.

  1. Ändern Sie die Clusterkonfiguration, und ändern Sie den JMS-Typ in REMOTE .


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/bin/password_file racluster.jms-service.type=REMOTE
  2. Erstellen Sie einen JMS-Host in Übereinstimmung mit dem DAS JMS-Host.


    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. Legen Sie für den JMS-Host den DAS JMS-Host fest, der im vorherigen Schritt erstellt wurde.


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

ProcedureVerwenden der Admin-GUI

  1. Wechseln Sie zu ?Konfigurationen“->cluster-name-config->Java Message Service->JMS Hosts.

  2. Klicken Sie auf Neu, um einen neuen JMS-Host zu erstellen; wählen Sie für diesen Host den Namen dashost.

  3. Geben Sie die Konfigurationseinstellungen in Übereinstimmung mit dem JMS-Dienst für den DAS ein; die Standardwerte lauten wie folgt:

    • Hostname: localhost

    • Port: 7676

    • Admin-Benutzer: admin

    • Password: admin

    Ändern Sie diese Einstellungen nach Bedarf für Ihren DAS JMS-Dienst.

  4. Wechseln Sie erneut auf die Registerkarte "Java Message Service", und ändern Sie den JMS-Diensttyp in REMOTE (der Standardwert lautet LOCAL).

  5. Wählen Sie dashost aus der Dropdown-Liste default-jms-host aus.

  6. Speichern Sie die Änderungen, und starten Sie den Knotenagenten oder Cluster.

Keine Anzeige des jmaki-Diagramms in Netscape 8.1.3, Mozilla 1.7 und Safari 2.0.4 möglich (6543014)

Beschreibung

Beim Versuch, ein Diagramm von der Seite zur Überwachung der Protokollstatistik über einen nicht unterstützten Browser anzuzeigen, wird möglicherweise die folgende Fehlermeldung angezeigt:


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

Lösung

Verwenden Sie einen unterstützten Browser. Unter Browser finden Sie eine Liste der von Communications Server unterstützten Browser.

Der create-domain-Befehl schlägt mit einem benutzerdefinierten Master-Passwort unter AIX fehl (6628170)

Beschreibung

Unter einem AIX-Betriebssystem schlägt der Versuch, eine Domäne mit einem benutzerdefinierten Master-Passwort zu erstellen, mit dem folgenden Fehler fehl:


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

Anwendungsclient

In diesem Abschnitt werden bekannte Probleme des Anwendungsclients sowie ihre Lösungen beschrieben.

Mit Application Client Archive kombinierte Bibliotheks-JAR überschreibt MANIFEST-Datei (6193556)

Beschreibung

Wenn Sie in Ihrer Client-JAR über eine JAR-Datei auf oberster Ebene verfügen (in diesem Fall reporter.jar) und den Client JAR bereitstellen, überschreibt die Datei MANIFEST für diese JAR die Datei MANIFEST für den Client-JAR.

Lösung

Zu diesem Zeitpunkt steht keine Lösung zur Verfügung.

ACC versucht stets, eine Verbindung mit localhost:3700 herzustellen (6527987)

Beschreibung

Der Anwendungsclient versucht stets, eine Verbindung mit localhost:3700 herzustellen. Das Problem ist, dass mehrere Systemeigenschaften gelesen werden müssen, bevor der Clientcode aufgerufen wird.

Lösung

Setzen Sie die folgenden Werte als Systemeigenschaften (-D in JAVA_CMD). Setzen Sie diese Werte nicht in Ihrem appclient-Code:


org.omg.CORBA.ORBInitialHost = server-instance-host
org.omg.CORBA.ORBInitialPort = server-instance-port

ASQuickStartup führt zu SocketChannel.keyFor()-Fehler, anstelle von SelectionKey wird Null zurückgegeben (Issue Tracker 3027)

Beschreibung

Wenn ein SocketChannel für mehr als eine Auswahl registriert ist, wird für socketChannel.keyFor(lastRegisteredSelector) anstelle von SelectionKey Null zurückgegeben.

Lösung

Dieses Problem hängt mit dem JDK-Problem 6562829 zusammen und wird voraussichtlich in 6.0 U3 behoben. In Communications Server wurde eine Umgehung implementiert, sodass das Wrapping für die Auswahl aufgehoben wird, bevor die API keyFor aufgerufen wird. Dadurch kann keyFor erfolgreich durchgeführt werden, bis das JDK-Problem behoben wurde.

Im Lieferumfang enthaltene Sun JDBC-Treiber

In diesem Abschnitt werden bekannte Probleme der im Lieferumfang enthaltenen Sun JDBC-Treiber sowie ihre Lösungen beschrieben.

PreparedStatement-Fehler (6170432)

Beschreibung 1

Wenn eine Anwendung mehr als 3000 PreparedStatement -Objekte in einer Transaktion generiert, kann für DB2 der folgende Fehler auftreten:

[sunm][DB2 JDBC Driver] Keine weiteren Anweisungen. Erstellen Sie das Paket erneut mit einem höheren Wert für dynamicSections.

Lösung 1

Fügen Sie die folgenden Eigenschaften zur Verbindungspooldefinition hinzu, damit der Treiber DB2-Pakete mit einem größeren dynamischen Abschnittswert neu bindet:

createDefaultPackage=true replacePackage=true dynamicSections=1000

Beschreibung 2

Im Zusammenhang mit dem oben erwähnten PrepardStatement-Fehler kann folgender Fehler auftreten:

[sunm][DB2 JDBC Driver][DB2]Virtueller Speicher oder Datenbankressource steht nicht zur Verfügung.

Lösung 2

Erhöhen Sie den Wert des Konfigurationsparameters APPLHEAPSZ des DB2-Servers. Ein geeigneter Wert ist 4096.

Beschreibung 3

Isolationsebene TRANSACTION_SERIALIZABLE Wenn eine Anwendung die Isolationsebene TRANSACTION_SERIALIZABLE und einen der oben genannten Parameter verwendet, kann die Anwendung beim Verbindungsaufbau abstürzen.

Lösung 3

Um die Isolationsebene für eine Verbindung wie gewünscht setzen zu können, muss das entsprechende Verbindungspool auf derselben Isolationsebene erstellt werden.

Java DB wird nach dem Neustarten des Computers oder Starten von Application Server nicht gestartet (6515124)

Beschreibung

Die im Paket enthaltene Java DB-Datenbank wird nach dem Neustarten eines Hostsystems oder einer Solaris-Zone bzw. nach dem Starten von Communications Server nicht automatisch neu gestartet. Dies ist kein Fehler, sondern das erwartete Verhalten für Anwendungen, die im Paket enthalten sind, bzw. für Drittanbieteranwendungen. Das Problem ist, dass die Java DB vor der Communications Server-Instanz gestartet werden muss.

Lösung

Stellen Sie nach dem Neustart des Hostcomputers oder einer Solaris-Zone sicher, dass Sie die Java DB vor Communications Server starten. Beispiel:


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

Bereitstellung

Automatische Bereitstellung schlägt auf einem Cluster manchmal fehl (6610527)

Beschreibung

Zeitprobleme führen in Domänen, für die Clusterunterstützung konfiguriert wurde, zum Fehlschlagen der automatischen Bereitstellung. Dieses Problem wurde in Domänen ohne Clusterunterstützung nicht beobachtet.

Lösung

Wählen Sie eine der folgenden Lösungen:

Das anwendungsspezifische Klassenladeprogramm wird nicht von der JSP-Kompilation verwendet (6693246).

Beschreibung

Das anwendungsspezifische Klassenladeprogramm (applibs oder --libraries) wird nicht von der JSP-Anwendung verwendet. In der Folge werden JSPs, die auf diese JARs verweisen, nicht kompiliert.

Lösung

Keine bekannte Lösung.

Dokumentation

In diesem Abschnitt werden die bekannten Probleme mit der Dokumentation sowie ihre Lösungen beschrieben.

Javadoc-Unregelmäßigkeiten (verschiedene Fehlernummern)

Die Javadoc verschiedener AMX-Schnittstellen und -Methoden fehlen oder sind nicht korrekt:

Im Paket enthaltene ANT gibt Fehler java.lang.NoClassDefFoundError aus (6265624)

Beschreibung

Der folgende Ausnahmefehler tritt im Thread "main" auf: java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher.

Lösung

Die Verwendung der Paket-ANT für Funktionen außerhalb von Communications Server wird nicht empfohlen.

EJB

Resource Injection funktioniert nicht in HandlerChain (6750245)

Beschreibung

Resource Injection funktioniert aufgrund der EJB-Installationsreihenfolge nicht in HandlerChain.

Lösung

Keine bekannte Lösung.

Java EE-Lernprogramm

Bei Verwendung von Administration Console zum Erstellen von Ressourcen geben Sie auf der Registerkarte "Targets" den Server als Ziel an. Wenn Sie die Befehlszeile oder ein asant-Ziel verwenden, ist der Server standardmäßig als Server festgelegt und Sie müssen keine weiteren Änderungen vornehmen.

Java Persistence

TopLink erwartet, dass für das Feld/die Eigenschaft Collection ein Klon erstellt werden kann (Issue Tracker 556)

Beschreibung

Wenn die java.util.Arrays.asList()-API zum Konvertieren eines Object[]-Wertes in einen Collection-Wert verwendet wird, gibt das JDK eine Implementierung von java.util.ArrayList zurück, für die kein Klon erstellt werden kann. Dies führt zu folgender Ausnahme:


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

Dieses Problem wird beschrieben in https://glassfish.dev.java.net/issues/show_bug.cgi?id=556.

Lösung

Erstellen Sie eine weitere Sammlung unter Verwendung des Konstruktors; Beispiel:


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

GenerationType.IDENTITY und DataDirect-Treiber mit SyBase (Issue Tracker 2431)

Beschreibung

Der Versuch, eine Element einzufügen, das GenerationType.IDENTITY verwendet, schlägt fehl, wenn der DataDirect-Treiber mit SyBase verwendet wird. Der Versuch schlägt fehl, da der DataDirect-Treiber eine gespeicherte Prozedur für jede parametrisierte vorbereitete Anweisung erstellt.

Lösung

Setzen Sie in der Datei domain.xml die Eigenschaft PrepareMethod=direct auf die entsprechende Datenquelle.

Lifecycle-Verwaltung

In diesem Abschnitt werden die bekannten Probleme der Lifecycle-Verwaltung sowie ihre Lösungen beschrieben.

Durch das Setzen der Eigenschaft ejb-timer-service schlägt der Befehl set fehl (6193449)

Beschreibung

Nachdem Sie die ejb-timer-service-Eigenschaft minimum-delivery-interval auf 9000 gesetzt haben, führt der Versuch, die ejb-timer-service-Eigenschaft redelivery-interval-in-mills auf 7000 zu setzen, zum Fehlschlagen des set-Befehls mit dem folgenden Fehler:


[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.

Die Logik, die zwischen dem Neuzustellungsintervall und dem minimalen Zustellungsintervall besteht, ist nicht korrekt, sodass Sie weder über die Benutzeroberfläche noch über die Befehlszeilenschnittstelle die Werte so setzen können, dass der minimale Zustellungsintervall größer ist als der Neuzustellungsintervall.

Der Wert der Eigenschaft minimum-delivery-interval-in-millis muss immer höher oder gleich dem Wert der Eigenschaft redelivery-interval-in-millisdes ejb-Timer-Dienstes sein. Das Problem ist, dass in Application Server eine falsche Validierungsprüfung durchgeführt wird, um zu überprüfen, ob der Wert für redelivery-interval-in-millis höher ist als der Wert für minimum-delivery-interval-in-millis.

Lösung

Verwenden Sie für diese Eigenschaften folgende Standardwerte:


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

Die Verwendung anderer Werte verursacht einen Fehler.

Fehler beim Auflisten von physischen JMS-Zielen innerhalb von Nicht-DAS-Konfiguration (6532532)

Beschreibung

Beim Versuch, die physischen JMS-Ziele unter Verwendung von default-config anzuzeigen, wird eine Fehlermeldung angezeigt.

Lösung

Dies ist das erwartete Verhalten. In Communications Server 2.0 ist default-config eine Vorlage mit Konfigurationsinformationen, sodass JMS-Operationen (z. B. list und create) für default-config nicht ausgeführt werden können. Diese JMS-Operationen können jedoch für die Konfigurationen Ihrer Cluster- oder eigenständigen Instanzen ausgeführt werden.

Nur Win2003: Speicherlecks bei nicht ausgelagertem Pool; Probleme mit TCP-Stack und Funktionen für umfangreichen Zugriff (6575349)

Beschreibung

(Nur Windows 2003) Die Verwendung von umfangreichen Zugriffsfunktionen auf Systemen unter Windows 2003 führt zu Speicherlecks. Das Problem tritt auf, da der nicht ausgelagerte Win32-Speicherpool kontinuierlich erweitert wird und dies letztendlich zum Fehlschlagen des gesamten TCP/IP-Stacks führt. Nach dem Fehlschlagen weist der TCP/IP-Stack einen nicht wiederherstellbaren Status auf. Die einzige Möglichkeit, den Stack wiederherzustellen, ist der Neustart des Windows 2003-Systems.

Abhilfe

Das Problem kann auf zwei verschiedene Arten umgangen werden.

Protokollierung

In diesem Abschnitt werden die bekannten Protokollierungsprobleme sowie ihre Lösungen beschrieben.

Das Setzen der Debug-Anweisung für access,failure führt dazu, dass die Anwendung beim Application Server-Start nicht reagiert (6180095)

Beschreibung

Das Setzen der Option java.security.debug für JVM verursacht einen Deadlock in der Server-Startinstanz. Das Problem tritt beispielsweise auf, wenn Sie für domain.xml die Option wie folgt gesetzt haben:


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

Lösung

Zu diesem Zeitpunkt steht keine Lösung zur Verfügung. Verwenden Sie diese Option nicht.

Message Queue

In diesem Abschnitt werden die bekannten Message Queue-Probleme sowie ihre Lösungen beschrieben.

Die Wiederherstellung der JMS-Verbindung wird in bestimmten, timingabhängigen Fällen nicht erfolgreich ausgeführt (6173308, 6189645, 6198481, 6199510, 6208728)

Beschreibung

Fehler beim erneuten Verbindungsaufbau in Timing-abhängigen Szenarien können durch verschiedene Probleme verursacht werden.

Lösung

Es gibt folgende Problemlösungen:

Der Server startet nicht, wenn MQ Broker nicht gestartet wurde (6740797)

Beschreibung

Wenn Sie JMS als REMOTE konfigurieren, kann Enterprise Server nur gestartet werden, wenn der MQ Broker nicht gestartet wurde.

Lösung

Legen Sie die folgende JVM-Option so fest: com.sun.enterprise.jms.CONNECT_MQ_LAZILY=true . Nach Festlegung dieser JVM-Option können Sie Communications Server starten, falls der MQ-Broker nicht gestartet wurde. Wir empfehlen Ihnen jedoch, MQ vor dem Start des Servers zu starten.

MQ-Broker wird mit Cluster-Profil unter Linux nicht gestartet (6524871)

Beschreibung

Nach dem Erstellen einer Domäne mit einem Cluster-Profil auf einem Linux-System kann ein java.lang.OutOfMemoryError: Java heap space-Fehler auftreten, und die Serverinstanz wird möglicherweise nicht gestartet, da der Start des MQ-Brokers fehlschlägt. Das System kann nach dieser Bedingung nicht fortgesetzt werden. Das Problem ist eine nicht ordnungsgemäß konfigurierte Datei /etc/hosts; genau gesagt, der Serverhostname zeigt auf die Loopback-Adresse 127.0.0.1.

Lösung

Ein MQ-Broker-Cluster kann nicht gestartet werden, wenn das Netzwerkgerät auf die Loopback-Adresse zeigt. Dies ist kein Fehler. Um dieses Problem zu lösen, stellen Sie sicher, dass die /etc/hosts-Datei für den Communications Server-Host nicht auf 127.0.0.1 zeigt.

Wenn imqjmsra.jar vor dem Upgrade geladen wird, kommt es zu einer Nichtübereinstimmung von alten und neuen Klassen (6740794)

Beschreibung

Der Server prüft beim Start des Anwendungsservers die Version von Message Queue. Wenn die Version von Message Queue inkorrekt ist, verwendet der Server mqjmsra.jar für das Upgrade. Dieses Upgrade-JAR und seine Klassen stehen dem Server erst nach einem Neustart des Anwendungsservers zur Verfügung. Diese Situation tritt nur auf, wenn Message Queue alleine aufgerüstet wird oder wenn nur auf Application Server ein Patch angebracht wird. Im Rahmen dieser Situation ist es möglich, dass der Anwendungsserver nicht startet.

Lösung

Message Queue und der Anwendungsserver müssen auf der gleichen Patch-Ebene gewartet werden. Andernfalls starten Sie den Anwendungsserver erneut.

Überwachung

In diesem Abschnitt werden die bekannten Überwachungsprobleme sowie ihre Lösungen beschrieben.

In einigen Überwachungsstatistiken für den HTTP-Service werden Informationen angezeigt, die nicht nützlich sind und daher ignoriert werden sollten (6174518)

Beschreibung

Wenn die Überwachungsstatistiken einiger Elemente des HTTP-Dienstes angezeigt werden, entsprechen einige präsentierte Werte nicht den aktuellen Werten oder lauten immer 0. Insbesondere folgende HTTP-Servicestatistiken enthalten keine auf den Anwendungsserver anwendbaren Informationen und sollten ignoriert werden.

Lösung

Diese Überwachungen werden in zukünftigen Versionen entfernt und durch aussagekräftigere Informationen ersetzt.

Beim Öffnen der JNDI-Suche über die Admin-UI werden eine Vielzahl von Ausnahmen in der Datei server.log ausgegeben (6591734)

Beschreibung

Wenn die JNDI-Suche über die Admin-GUI geöffnet wird, werden eine Vielzahl von Ausnahmen ausgegeben.

Lösung

Zu diesem Zeitpunkt steht keine Lösung zur Verfügung.

Sicherheit

In diesem Abschnitt werden die bekannten Probleme und ihre Lösungen von Sicherheitsfunktionen in Communications Server, Webanwendungen sowie Zertifikaten beschrieben.

OutofMemory-Fehler in SSL-Szenarien aufgrund hoher Belastung (JDK 6 Problem 23)

Beschreibung

Ein JDK-Bug (beachten Sie https://jdk6.dev.java.net/issues/show_bug.cgi?id=23) in JDK6 Sun PKCS11 Anbieter konnte einen OutOfMemoryError verursachen, wenn bestimmte SSL-Szenarien unter hoher Belastung ausgeführt wurden.

Lösung

Wenn dieses Problem auftritt, entfernen Sie densun.security.pkcs11.SunPKCS11-Anbieter in der Datei java.security in Ihrer JRE-Installation.

SSL-Beendigung funktioniert nicht (6269102)

Beschreibung

Die SSL-Beendigung funktioniert nicht; wenn Load Balancer (Hardware) für die SSL-Beendigung konfiguriert ist, ändert Communications Server das Protokoll während der Umleitung von https zu http.

Lösung

Fügen Sie zwischen dem Hardware-Lastausgleich und Communications Server einen Software-Lastausgleich hinzu.

Socket-Verbindungsleck mit SSL (6492477)

Beschreibung

Aufgrund eines JVM-Fehlers tritt bei einigen JDK-Versionen ein Leckproblem auf, wenn security-enabled für ein HTTP-Zielgerät auf true gesetzt ist. Im Folgenden sind die Schritte zum Reproduzieren dieses Fehlers aufgelistet:

  1. Setzen Sie security-enabled für das HTTP-Zielgerät auf true:


    <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. Kommentieren Sie das Anhalten der Domäne am Ende von Quicklook-Tests heraus.

  3. Führen Sie Quicklook-Tests aus.

  4. Überprüfen Sie die Socket-Verwendung:


    netstat -an | grep 8080

    Die folgenden Elemente werden als verwendet angezeigt:


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

Das Problem wird auf der GlassFish-Website dargestellt unter: https://glassfish.dev.java.net/issues/show_bug.cgi?id=849.

Lösung

Führen Sie ein Upgrade auf die aktuellste JDK-Version durch.

Webcontainer

In diesem Abschnitt werden die bekannten Probleme mit Webcontainern sowie ihre Lösungen beschrieben.

Unter Windows kann die Bereitstellung einer Anwendung über - -precompilejsp=true die JAR-Dateien in der Anwendung sperren, sodass eine spätere Aufhebung der Bereitstellung bzw. eine erneute Bereitstellung fehlschlägt (5004315)

Beschreibung

Wenn Sie beim Bereitstellen einer Anwendung unter Windows eine Vorkompilierung der JSPs anfordern, funktionieren spätere Versuche zum Aufheben der Bereitstellung dieser Anwendung oder zum erneuten Bereitstellen der Anwendung (oder einer anderen Anwendung mit derselben Modul-ID) nicht wie erwartet. Das Problem liegt darin begründet, dass durch die JSP-Vorkompilierung JAR-Dateien in Ihrer Anwendung geöffnet, jedoch nicht wieder geschlossen werden, und Windows verhindert, dass zur Aufhebung der Bereitstellung diese Dateien gelöscht oder zur erneuten Bereitstellung diese Dateien überschrieben werden.

Beachten Sie, dass das Aufheben der Bereitstellung erfolgreich durchgeführt wird, bis die Anwendung aus Application Server logisch entfernt wird. Außerdem gibt das asadmin-Programm keine Fehlermeldung aus, obwohl das Anwendungsverzeichnis und die gesperrten JAR-Dateien auf dem Server weiterhin vorhanden sind. Die Protokolldatei des Servers enthält jedoch Fehlermeldungen, die Sie über den fehlgeschlagenen Löschvorgang der Dateien und des Verzeichnisses der Anwendung informieren.

Die Versuche zum erneuten Bereitstellen der Anwendung nach der Aufhebung der Bereitstellung schlagen fehl, da der Server versucht, die vorhandenen Dateien und Verzeichnisse zu entfernen, was ebenfalls nicht möglich ist. Dieser Fehler tritt beispielsweise auf, wenn Sie versuchen, eine Anwendung mit der Modul-ID der ursprünglich bereitgestellten Anwendung bereitzustellen, da der Server die Modul-ID für die Auswahl eines Verzeichnisses für das Speichern der Dateien der Anwendung verwendet.

Aus demselben Grund schlägt auch der Versuch fehl, die Anwendung erneut bereitzustellen, ohne dass die Bereitstellung zuvor aufgehoben wurde.

Diagnose

Wenn Sie die Anwendung erneut bereitstellen möchten oder die Anwendung bereitstellen möchten, nachdem Sie die Bereitstellung der Anwendung zuvor aufgehoben haben, gibt das asadmin-Programm eine Fehlermeldung aus, die etwa der folgenden Meldung entspricht:


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.

Lösung

Wenn Sie bei der Bereitstellung einer Anwendung --precompilejsps=false (die Standardeinstellung) festlegen, tritt dieses Problem nicht auf. Beachten Sie, dass beim ersten Aufruf der Anwendung die JSP-Kompilierung ausgelöst wird, sodass die Antwortzeit für den ersten Aufruf länger ist als für folgende Aufrufe.

Beachten Sie weiterhin, dass Sie im Falle einer Vorkompilierung den Server stoppen und erneut starten müssen, bevor Sie die Bereitstellung der Anwendung aufheben oder die Anwendung erneut bereitstellen. Durch den Prozess des Herunterfahrens werden die gesperrten JAR-Dateien wieder freigegeben, sodass die Aufhebung der Bereitstellung oder die erneute Bereitstellung nach dem Neustart erfolgreich ist.

Keine Bereitstellung von WAR-Dateien mit Servlet 2.4-basierter web.xml-Datei möglich, die ein leeres <load-on-startup>-Element enthält (6172006)

Beschreibung

Das optionale load-on-startup servlet-Element in der Datei web.xml gibt an, dass das zugehörige Servlet als Teil des Startvorgangs der die Deklaration ausführenden Webanwendung geladen und initialisiert werden muss.

Für dieses Element kann optional eine ganze Zahl angegeben werden, mit der festgelegt wird, in welcher Reihenfolge das Servlet mit Bezug auf die anderen Servlets der Anwendung geladen und initialisiert werden soll. Wenn für <load-on-startup> kein Wert angegeben ist, wird keine bestimmte Reihenfolge berücksichtigt und es wird lediglich festgelegt, dass das Servlet beim Start der entsprechenden Webanwendungen geladen und initialisiert wird.

Das Servlet 2.4-Schema für web.xml unterstützt keine leere <load-on-startup> mehr; dies bedeutet, dass bei Verwendung einer Servlet 2.4-basierten web.xml eine Ganzzahl angegeben werden muss. Wenn eine leere <load-on-startup> angegeben wurde, wie in <load-on-startup/>, schlägt die Validierung von web.xml basierend auf dem Servlet 2.4-Schema für web.xml fehl, wodurch die Bereitstellung der Webanwendung fehlschlägt.

Rückwärtskompatibilität: Die Angabe eines leeren <load-on-startup>-Elements ist mit Servlet 2.3-basierten web.xml-Dateien nach wie vor möglich.

Lösung

Geben Sie <load-on-startup>0</load-on-startup> an, wenn Sie eine Servlet 2.4-basierte web.xml-Datei verwenden, um anzugeben, dass die Servlet-Lastenreihenfolge irrelevant ist.

Keine Kompilierung von JSP-Seite auf Servern mit eingeschränkten Ressourcen möglich (6184122)

Beschreibung

Der Zugriff auf die JSP-Seite erfolgt, aber die eigentliche Kompilierung wird durchgeführt und das Serverprotokoll enthält die Fehlermeldung "Unable to execute command" mit folgenden Stapelverlaufsinformationen:


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)

Lösung

Setzen Sie den Schalter für die JSP-Kompilierung fork auf false.

Wählen Sie eine der folgenden Vorgehensweisen:

Alle Einstellungen verhindern, dass ant einen neuen Prozess für die javac -Kompilierung erzeugt.

Webdienste

In diesem Abschnitt werden die bekannten Probleme mit Webcontainern sowie ihre Lösungen beschrieben.

wscompile schlägt mit Fehler "package javax.xml.rpc does not exist" in JDK6 u4 b3 fehl (6638567)

Beschreibung

Die Ant-Aufgabe wscompile schlägt für JDK 6 Update 4 fehl. Für jede JAX-RPC API-Klasse wird die folgende Meldung angezeigt:


package package-name does not exist

Lösung

Stellen Sie vor dem Ausführen der Ant-Aufgabe wscompile sicher, dass javaee.jar im Klassenpfad angegeben ist, nicht j2ee.jar.