PROBLEM
Wenn eine Serverobjekterweiterung (SOE) oder ein Serverobjekt-Interceptor (SOI) für ArcObjects SDK for Java bestimmte Java-APIs referenziert, die in JDK 8 vorhanden sind, jedoch in späteren JDK-Versionen entfernt wurden (beispielsweise Klassen in den Modulen "java.xml.ws", "java.corba" oder "java.transaction"), führt der Zugriff auf den Endpunkt des Service, der den Code der SOEs oder SOIs auslöst, die die Klassen aus diesen Modulen referenzieren, möglicherweise zu einer Fehlermeldung. Die folgenden schwerwiegenden Meldungen werden in Serverprotokollen angezeigt:
Level | Uhrzeit | Meldung | Quelle |
---|---|---|---|
SEVERE | Jul 1, 2021, 10:03:03 AM | Die Instanz des Service "USA.MapServer'" konnte die Anforderung nicht verarbeiten. AutomationException: sun/misc/BASE64Encoder | USA.MapServer |
SEVERE | Jul 1, 2021, 10:03:00 AM | Die Instanz des Service "USA.MapServer'" konnte die Anforderung nicht verarbeiten. AutomationException: org/omg/CORBA/StringHolder | USA.MapServer |
SEVERE | Jul 1, 2021, 10:02:57 AM | Die Instanz des Service "USA.MapServer'" konnte die Anforderung nicht verarbeiten. AutomationException: javax/xml/ws/Service$Mode | USA.MapServer |
Das SOE- oder SOI-Projekt kann erfolgreich erstellt werden, und es tritt kein Kompilierungsfehler auf. Das Problem tritt nur während der Laufzeit auf, wenn die SOE oder der SOI in Version 10.7 oder höher von ArcGIS Server bereitgestellt wird.
Ab ArcGIS Server 10.7 wurde die Service-Runtime, die ArcMap-basierten Services zugrunde liegt, von Java 8 auf Java 11 aktualisiert, obwohl ArcObjects Java-SOEs und -SOIs noch mit JDK 8 erstellt werden müssen. Daher werden in 10.7 und höheren Versionen von ArcGIS Server die Java-Klassen, die aus JDK 11 entfernt wurden, aber in ArcObjects-SOEs oder -SOIs referenziert werden, von der in Java 11 ausgeführten Service-Runtime nicht wie in früheren Versionen von ArcGIS Server automatisch geladen.
Eine Liste der Java-Module, die in JDK 11 entfernt wurden, finden Sie unter Removal of Java EE and CORBA Modules
Wenn Ihre ArcObjects Java-SOEs oder -SOIs vor ArcGIS Server 10.7 funktioniert haben, während in höheren Versionen von ArcGIS Server ähnliche Probleme auftreten, vergewissern Sie sich zuerst, dass die in der Protokollmeldung genannte Java-Klasse aus einem Java-Modul stammt, das aus JDK 11 entfernt wurde. Wenn dies der Fall ist, haben Sie zwei Möglichkeiten:
Option 1: Hinzufügen der JAR-Dateien der aus JDK 11 entfernten Java-Module als Abhängigkeiten in Ihrem SOE- oder SOI-Projekt und Exportieren der SOE bzw. des SOI mit Abhängigkeiten
Schrittweise Anweisungen zum Erstellen von Paketen für Drittanbieter-Abhängigkeiten in SOEs oder SOIs finden Sie unter How to export Java SOEs with dependencies. Auf diese Weise kann die Service-Runtime die Java-Klassen aus der in der SOE bzw. in dem SOI gepackten JAR-Datei laden, und das Problem sollte behoben sein.
Option 2: Migrieren der ArcObjects-SOE oder des ArcObjects-SOI zur Kompilierung mit Enterprise SDK
Da Enterprise SDK das Erstellen von Java-SOEs und -SOIs mit JDK 11 für ArcGIS Pro-basierte Services unterstützt, können Sie auch Ihre ArcObjects-SOEs oder -SOIs zur Erstellung mit Enterprise SDK migrieren. Um die Klassen aus den in JDK 11 entfernten Java-Modulen zu verwenden, müssen Sie diese Module in Ihrem SOE- oder SOI-Projekt als Drittanbieter-Abhängigkeiten hinzufügen. Andernfalls kann das SOE- oder SOI-Projekt nicht kompiliert werden, und der Java-Compiler zeigt Fehlermeldungen für die in JDK 11 nicht vorhandenen Klassen an, es sei denn, Sie fügen nicht relevante Abhängigkeiten hinzu. Dadurch kann dieses Problem beim Laden von Java-Klassen bei der Kompilierung anstatt während der Laufzeit erkannt werden.
Artikel-ID: 000026040
Unterstützung durch ArcGIS-Experten anfordern
Esri Support App herunterladen