PROBLEMA
Si un ArcObjects SDK for Java Server Object Extension (SOE) o Server Object Interceptor (SOI) hace referencia a determinadas API de Java que están presentes en JDK 8, aunque quitadas en versiones posteriores de JDK, como las clases de los módulos "java.xml.ws", "java.corba" o "java.transaction", acceder al extremo del servicio que desencadena las clases de referencia de código de SOE o SOI de estos módulos puede dar como resultado un mensaje de error. Los siguientes mensajes de nivel grave aparecen en los registros del servidor:
Nivel | Hora | Mensaje | Fuente |
---|---|---|---|
SEVERE | Jul 1, 2021, 10:03:03 AM | Instancia de servicio ''USA.MapServer'' no pudo procesar una solicitud. AutomationException: sun/misc/BASE64Encoder | USA.MapServer |
SEVERE | Jul 1, 2021, 10:03:00 AM | Instancia de servicio ''USA.MapServer'' no pudo procesar una solicitud. AutomationException: org/omg/CORBA/StringHolder | USA.MapServer |
SEVERE | Jul 1, 2021, 10:02:57 AM | Instancia de servicio ''USA.MapServer'' no pudo procesar una solicitud. AutomationException: javax/xml/ws/Service$Mode | USA.MapServer |
El proyecto de SOE o SOI se puede crear correctamente y no hay ningún error de compilación. El problema solo se puede ver durante el tiempo de ejecución si la SOE o el SOI se implementan en ArcGIS Server 10.7 o versiones posteriores.
A partir de ArcGIS Server 10.7, el tiempo de ejecución que potencia los servicios basados en ArcMap se ha actualizado de Java 8 a Java 11, aunque sigue siendo necesario crear SOE y SOI de ArcObjects Java con JDK 8. Por tanto, en la versión 10.7 o posteriores de ArcGIS Server, las clases de Java que se eliminaron del JDK 11 pero a las que se hace referencia en una SOE o SOI de ArcObjects no se cargan automáticamente mediante el tiempo de ejecución del servicio que se ejecuta en Java 11, como ocurría en versiones anteriores de ArcGIS Server.
Para ver la lista de los módulos de Java que se eliminan en JDK 11, consulte Eliminación de los módulos Java EE y CORBA
Si su SOE o SOI de ArcObjects Java solían funcionar antes de ArcGIS Server 10.7, pero empieza a ver problemas similares en las versiones posteriores de ArcGIS Server, primero confirme que la clase Java notificada en el mensaje de registro corresponde a un módulo Java que se elimina del JDK 11. Una vez esto está confirmado, existen dos opciones para continuar:
Opción 1: agregue los archivos JAR de los módulos Java eliminados de JDK 11 como dependencias del proyecto de SOE o SOI y exporte la SOE o SOI con dependencias
Consulte Cómo exportar SOE de Java con dependencias para obtener instrucciones paso a paso sobre el empaquetado de dependencias de terceros en una SOE o SOI. De esta forma, el tiempo de ejecución del servicio puede cargar las clases Java desde el archivo JAR empaquetado en la SOE o SOI, lo que debería resolver el problema.
Opción 2: migre la SOE o SOI de ArcObjects para que se compile con Enterprise SDK
Dado que Enterprise SDK admite la creación de SOE y SOI Java con los servicios basados en JDK 11 para ArcGIS Pro, también puede migrar su SOE o SOI de ArcObjects para su compilación con Enterprise SDK. Para utilizar las clases de los módulos Java que se quitaron de JDK 11, debe agregar estos módulos como dependencias de terceros en su proyecto de SOE o SOI. De lo contrario, el proyecto de SOE o SOI no se compila y el compilador de Java muestra mensajes de error para aquellas clases que no están presentes en JDK 11, a menos que se agreguen dependencias relevantes. Ayuda a detectar este problema de carga de clases Java durante el tiempo de compilación en lugar de en el tiempo de ejecución.
Id. de artículo: 000026040
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri