top of page
Importador de dados cadastrais
Diario de bordo, data estelar 1234

        Ontem me deparai com uma tarefa relacionada a desenvolvimento de programa que será entregue com conceito de importador de dados.

        Depois de algum tempo configurando filtro e template da nova metodologia de mapeamento de processos que está sendo implantada na organização e fazendo as evoluções de validações semânticas no ARIS, ou seja, desenvolvendo código em javaScript para que tenhamos algumas modificações automáticas nos modelos de processos e também que tenhamos uma maior padronização da metodologia de mapeamento de processos, estou de volta ao Importador.

        Depois de ficar um mês alocado exclusivamente no projeto da nova metodologia do ARIS, retorno em período parcial ao projeto do importador de fichas cadastrais.

        O conceito da evolução do importador é simples, existia uma única maneira de pegarmos um arquivo XML para que fosse exibido na tela, fazendo upload local, agora o requisito é possibilitar que o importador vá também até servidor do protocolador de fichas cadastrais (outro programa sendo desenvolvido concomitantemente) e pegue o XML das fichas cadastrais. Porem para otimizar o desempenho do protocolador temos que pegar o XML da ficha sem ter que carregar os anexos num primeiro momento, deixemos os anexos para serem carregados no momento em que precisaremos deles, dessa forma acreditamos que diluiremos o tempo de espera inicial do programa.

        Lembrando que no projeto do importador nós usamos JAVAEE com servidor de aplicação WEBSPHERE, MAVEN, JAXB; a arquitetura da organização utiliza primefaces.

        O objetivo agora é pegar uma URL HTTPS, iniciar conexão com esse servidor, e pegar o XML que essa página específica me fornece. Na conexão URL que nos disponibilizaram do protocolador (outro programa sendo desenvolvido) nós temos um identificador cadastral que vai nos servir para identificar o XML, isso foi ótimo.

 

      Primeiro coloquei no XHTML inicial para imprimir esse ID, tendo a certeza de que peguei o identificador.

      Depois alterei a organização de chamada do XHTML, visto que ele chamava sempre método de classe java inicial onde possibilitava o upload de arquivos locais, de minha máquina, e agora eu quero fazer uma requisição HTTPS para conexão com servidor onde o programa protocolador tem guardado seus dados.

      Feito isso, o que preciso agora é criar na classe java inicial método que será o primeiro da ordem a ser chamado pelo XHTML onde esse método vai iniciar conexão com servidor do protocolador para pegar o XML(depois coloquei o método callURL separado e em outro momento vou criar uma classe só para essas comunicações) ainda no método inicial vou chamar a classe de nome unmarshall (desempacotador) de XML que por sua vez utiliza o JAXB como ferramenta para converter XML em objetos, depois encaminho para as outras classes que estavam sendo chamadas antes, já que continuo com a possibilidade do upload ser local.

      Dando essa introdução do que precisava ser feito, vi que a parte que achava que seria mais simples foi a mais complexa por falta de conhecimento da arquitetura do webservice (proxy, etc ...). Eu estou falando do estabelecimento da conexão SSL, ou seja, HTTPS.

      O código é o mesmo de uma conexão HTTP, porém não funcionava. Sem problemas, breakpoint e vamos ver o erro!

      Opa! ..... Claro! ..... O texto da imagem diz tudo! Preciso do certificado de segurança, mas onde coloco? ... Fuçando a net descubro uma boa solução... Claro! Coloco no servidor de aplicação, no caso aqui, WEBSPHERE.

Procedimento(TUTORIAL)

1 Efetua login no IBM WebSphere Application Server Integrated Solutions Console e selecione Segurança > Certificado SSL e gerenciamento de chaves > Armazenamento de chaves e certificados.

2 Clique em NodeDefaultTrustStore.

3 Clique em Certificado de Assinante.

4 Clique em Recuperar da Porta.

5 Insira o nome do Host, a Porta SSL e o Alias do servidor da web. O Alias é geralmente uma sequência arbitrária que se tornará o nome das credenciais.

6 Clique em Recuperar Informações do Assinante e, em seguida, clique em OK. O certificado raiz é incluído na lista de certificados de assinante.

7 Se usando o Tivoli Access Manager ou outros proxies, também repita as etapas 4-6 para o Tivoli Access Manager ou outros servidores proxy.

 

 

 

      Bom, mãos à obra! ..... Ops! Não funcionou! .... Por que?

Borâ conversar com os Analistas a minha volta para ver como funciona o padrão da corporação. Talvez tenha me escapado alguma coisa!

     

      Um carinha perto de mim super cabeçudo (inteligente), me deixou feliz dizendo que eu o que eu tinha feito era o certo (padrão por ali e solução com equilíbrio entre custo e qualidade, não existe certo ou errado para mim nessa área, existe solução da melhor forma possível, por conta do equilíbrio que temos que ter entre qualidade e custo, mas é só um conceito que acredito, vamos que vamos). Mas ele falou uma coisa interessante quando viu o erro, que me economizou algum tempo. – “Cara! Isso está com jeito de ser o certificado do proxy”!

 

 

      Ok! Vamos verificar! Ele me passou um programinha onde conseguimos ver a comunicação com outros nós de nome Process explorer. Instalei, subi o servidor de aplicação, deploy já estava feito, rodei a aplicação e fiquei de olho na tela do programinha (tive que dar um print scream na tela para poder ver pois aparecia muito rápido).

      Show! O proxy estava na área! 

      Beleza! Vamos ao websphere para configurar uma variável para ignorar esse certificado.

Tutorial

Clique em Servidores > Tipos de Servidor e emServidores de Aplicativos WebSphere > server_name ou em Servidores Proxy do WebSphere > server_name. Em seguida, em Infraestrutura do Servidor, clique em Gerenciamento Java e Processos > Definição de Processo > Java Virtual Machine > Propriedades Customizadas.

      Bom! Galera! É claro que não virei especialista nisso, mas me virei e passamos para próxima fase do desenvolvimento, a má notícia é que isso terá de ser feito para todos os ambientes, mas pelas informações da equipe de arquitetura da corporação esse maneira de consultar o outro servidor (que é desenvolvimento) em produção é diferente e “talvez” nós não precisemos dessa solução de ignorar o proxy em produção.

      Quem tiver alguma dúvida manda aí embaixo, se souber respondo se não souber vou pesquisar. Quem quiser contribuir com alguma informação também, manda aí embaixo, espaço livre!

Um abraço e até a próxima.

 

PS: Existem várias outras maneiras de resolver esse problema!

 

 

Pablo Curty

 

 

 

 

bottom of page