PROBLEMA
Se um ArcObjects SDK for Java Server Object Extension (SOE) ou Server Object Interceptor (SOI) fizer referência a algumas Java APIs que estão presentes no JDK 8, mas removidas em versões posteriores do JDK, como classes nos módulos 'java.xml.ws', 'java.corba' ou 'java.transaction', acessar o parâmetro do serviço que ativa as classes de referência do código SOE ou SOI a partir desses módulos pode resultar em uma mensagem de erro. As seguintes mensagens de nível severo aparecem nos logs do servidor:
Nível | Tempo | Mensagem | Fonte |
---|---|---|---|
SEVERE | 1 de Julho, 2021, 10:03:03 AM | A instância do serviço 'USA.MapServer' falhou ao processar uma solicitação. AutomationException: sun/misc/BASE64Encoder | USA.MapServer |
SEVERE | 1 de Julho, 2021, 10:03:00 AM | A instância do serviço 'USA.MapServer' falhou ao processar uma solicitação. AutomationException: org/omg/CORBA/StringHolder | USA.MapServer |
SEVERE | 1 de Julho, 2021, 10:02:57 AM | A instância do serviço 'USA.MapServer' falhou ao processar uma solicitação. AutomationException: javax/xml/ws/Service$Mode | USA.MapServer |
O projeto SOE ou SOI pode ser construído com sucesso e não há erro de compilação. O problema pode ser visto somente durante o tempo de execução quando o SOE ou SOI é implantado no ArcGIS Server em versões 10.7 ou posteriores.
Desde o ArcGIS Server 10.7, o tempo de execução do serviço que alimenta os serviços baseados em ArcMap foi atualizado de Java 8 para Java 11, embora ArcObjects Java SOEs e SOIs ainda sejam necessários para serem construídos com JDK 8. Portanto, nas versões 10.7 ou mais recentes do ArcGIS Server, as classes de Java que foram removidas do JDK 11, mas referenciadas em um ArcObjects SOE ou SOI, não são carregadas automaticamente pelo tempo de execução do serviço em execução no Java 11, como nas versões anteriores do ArcGIS Server.
Para visualizar a lista dos módulos de Java que são removidos no JDK 11, consulte Remoção dos módulos Java EE e CORBA
Se o seu ArcObjects Java SOE ou SOI costumava funcionar antes do ArcGIS Server 10.7, mas você começar a ver problemas semelhantes em versões posteriores do ArcGIS Server, primeiro confirme se a classe de Java relatada na mensagem de log é de um módulo de Java que foi removido do JDK 11. Após isso ser confirmado, haverá duas opções para prosseguir:
Opção 1: Adicionar os arquivos JAR dos módulos de Java removidos do JDK 11 como dependências em seu projeto SOE ou SOI e exportar o SOE ou SOI com dependências
Consulte Como exportar Java SOEs com dependências para instruções detalhadas sobre como empacotar dependências de terceiros em um SOE ou SOI. Dessa maneira, o tempo de execução do serviço pode carregar as classes de Java do arquivo JAR empacotado no SOE ou SOI, o que deve resolver o problema.
Opção 2: Migrar ArcObjects SOE ou SOI para ser compilado com Enterprise SDK
Como o Enterprise SDK oferece suporte à construção de Java SOEs e SOIs com JDK 11 para serviços baseados no ArcGIS Pro, você também pode migrar seu ArcObjects SOE ou SOI para ser construído com o Enterprise SDK. Para usar as classes dos módulos de Java removidos do JDK 11, você deve adicionar esses módulos como dependências de terceiros em seu projeto SOE ou SOI. Caso contrário, seu projeto SOE ou SOI falhará ao ser compilado e o compilador Java solicitará mensagens de erro para as classes que não estiverem presentes no JDK 11, a menos que dependências relevantes sejam adicionadas. Isso ajuda a detectar esse problema de carregamento da classe de Java durante o tempo de compilação, em vez do tempo de execução.
ID do Artigo: 000026040
Obtenha ajuda de especialistas do ArcGIS
Baixe o Aplicativo de Suporte da Esri