Ir ao conteúdo
  • Cadastre-se

Java ERRO: "Remote host closed connection during handshake" na transmissão


Posts recomendados

Olá Amigos.

Preciso de uma ajuda de vocês que são especialistas em Java, preciso dar manutenção em um código que faz a transmissão do XML do eSocial, mas não sou especialista em Java e estou meio perdido.
O erro ocorre somente no ambiente do cliente, no nosso ambiente de desenvolvimento não ocorre o erro.

A versão do java é a mesma tanto no cliente como no nosso ambinte de testes.
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

 

O erro que está ocorrendo é o seguinte :

 

Dec 11, 2017 4:35:29 PM EnvioXml TransmiteLote

SEVERE: null

org.apache.axis2.AxisFault: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

        at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)

        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78)

        at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)

        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)

        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)

        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)

        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)

        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)

        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)

        at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)

        at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)

        at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)

        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)

        at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)

        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)

        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)

        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)

        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

        at ServicoEnviarLoteEventosStub.enviarLoteEventos(ServicoEnviarLoteEventosStub.java:188)

        at EnvioXml.TransmiteLote(EnvioXml.java:126)

        at Main.main(Main.java:258)

Caused by: javax.xml.stream.XMLStreamException: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

        at com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.close(Unknown Source)

        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.close(XMLStreamWriterWrapper.java:46)

        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:188)

        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:197)

        at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)

        ... 19 more

Caused by: javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

        at sun.security.ssl.SSLSocketImpl.checkEOF(Unknown Source)

        at sun.security.ssl.SSLSocketImpl.checkWrite(Unknown Source)

        at sun.security.ssl.AppOutputStream.write(Unknown Source)

        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)

        at java.io.BufferedOutputStream.flush(Unknown Source)

        at java.io.FilterOutputStream.flush(Unknown Source)

        at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191)

        at com.sun.xml.internal.stream.writers.UTF8OutputStreamWriter.flush(Unknown Source)

        ... 24 more

Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)

        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)

        at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)

        at sun.security.ssl.AppOutputStream.write(Unknown Source)

        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)

        at java.io.BufferedOutputStream.write(Unknown Source)

        at org.apache.commons.httpclient.WireLogOutputStream.write(WireLogOutputStream.java:68)

        at org.apache.commons.httpclient.ChunkedOutputStream.flushCache(ChunkedOutputStream.java:100)

        at org.apache.commons.httpclient.ChunkedOutputStream.write(ChunkedOutputStream.java:162)

        at com.sun.xml.internal.stream.writers.UTF8OutputStreamWriter.write(Unknown Source)

        at com.sun.xml.internal.stream.writers.UTF8OutputStreamWriter.write(Unknown Source)

        at com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.writeEndElement(Unknown Source)

        at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.writeEndElement(XMLStreamWriterWrapper.java:133)

        at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeEndElement(MTOMXMLStreamWriter.java:171)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeEndpart(OMSerializerUtil.java:58)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:125)

        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:113)

        at ServicoEnviarLoteEventosStub$LoteEventos_type0.serialize(ServicoEnviarLoteEventosStub.java:1428)

        at ServicoEnviarLoteEventosStub$LoteEventos_type0.serialize(ServicoEnviarLoteEventosStub.java:1390)

        at ServicoEnviarLoteEventosStub$EnviarLoteEventos.serialize(ServicoEnviarLoteEventosStub.java:560)

        at ServicoEnviarLoteEventosStub$EnviarLoteEventos.serialize(ServicoEnviarLoteEventosStub.java:521)

        at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)

        at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:695)

        at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:563)

        at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:874)

        at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)

        at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)

        at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)

        ... 20 more

Caused by: java.io.EOFException: SSL peer shut down incorrectly

        at sun.security.ssl.InputRecord.read(Unknown Source)

        ... 77 more

 

O código está desta forma:

 

public class EnvioXml {

 

    private static final int SSL_PORT = 443;

    String dados = "";

    String retorno = "";

 

    public String TransmiteLote(String loteXML,String certificadotransmissor, String senhacertificadotransmissor, String URLenvio, String arquivoCacerts) {

        try {

 

            System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");

                       

            dados = loteXML;

            URL url = new URL(URLenvio);

            String caminhoDoCertificadoDoCliente = certificadotransmissor;

            String senhaDoCertificado = senhacertificadotransmissor;

 

            InputStream entrada = new FileInputStream(caminhoDoCertificadoDoCliente);

            KeyStore ks = KeyStore.getInstance("pkcs12");

            try {

                ks.load(entrada, senhaDoCertificado.toCharArray());

            } catch (IOException e) {

                throw new Exception(

                        "Senha do Certificado Digital esta incorreta ou Certificado inválido.");

            }

 

            String alias = "";

            Enumeration<String> aliasesEnum = ks.aliases();

            while (aliasesEnum.hasMoreElements()) {

                alias = (String) aliasesEnum.nextElement();

                if (ks.isKeyEntry(alias)) {

                    break;

                }

            }

            X509Certificate certificate = (X509Certificate) ks.getCertificate(alias);

            PrivateKey privateKey = (PrivateKey) ks.getKey(alias, senhaDoCertificado.toCharArray());

            SocketFactoryDinamico socketFactoryDinamico = new SocketFactoryDinamico(certificate, privateKey);

            socketFactoryDinamico.setFileCacerts(arquivoCacerts);

 

            Protocol protocol = new Protocol("https", socketFactoryDinamico, SSL_PORT);

            Protocol.registerProtocol("https", protocol);

     

            OMElement ome = AXIOMUtil.stringToOM(dados);

 

            ServicoEnviarLoteEventosStub.LoteEventos_type0 dadosMsgType0 = new ServicoEnviarLoteEventosStub.LoteEventos_type0();

            dadosMsgType0.setExtraElement(ome);

 

            ServicoEnviarLoteEventosStub.EnviarLoteEventos distEnvioEsocial = new ServicoEnviarLoteEventosStub.EnviarLoteEventos();

            distEnvioEsocial.setLoteEventos(dadosMsgType0);

 

            ServicoEnviarLoteEventosStub stub = new ServicoEnviarLoteEventosStub(url.toString());

            ServicoEnviarLoteEventosStub.EnviarLoteEventosResponse result = stub.enviarLoteEventos(distEnvioEsocial);

 

            retorno = result.getEnviarLoteEventosResult().getExtraElement().toString();

 

        } catch (Exception ex) {

            Logger.getLogger(EnvioXml.class.getName()).log(Level.SEVERE, null, ex);

        }

 

return retorno;    }

}

 

Se alguém já passou por esse problema ou tiver alguma dica, será bem vinda.

 

Desde já agradeço qualquer ajuda.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...