Login Registre-se
[RESOLVIDO] Importante! Conversão de WSDL to JAVA usando Axis1.7.6  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
tiagoberga

Moderador
[Avatar]

Membro desde: 11/03/2014 10:10:20
Mensagens: 447
Offline

Em conversa com nosso moderador e parceiro Samuel Oliveira conseguimos resolver uma situação onde outros que fazem uso dos
recursos da NF-e deste fórum com a biblioteca Axis para realizar a conversão dos arquivos.wsdl para classes.java possam enfrentar.


INICIANDO A DÚVIDA

Através do Tópico do Samuel que diz respeito sobre a migração da
NF-e da versão 3.10 para 4.00, em especial acentuo quando fala sobre o uso do Axis na versão 1.7.5, onde disponibilizou o seu jar nfe-xsd-9-v1.2.jar que ja
contem os wsdls convertidos. Em sua grande maioria, o fórum ainda trabalha com a versão 1.5.3 inicialmente disponibilizado em rotinas pelo Administrador Maciel, posteriormente
fiz uso na versão 1.6.2 onde até ensinei como gera-los de forma manual através deste link http://www.javac.com.br/jc/posts/list/1967.page até aqui beleza, "dominamos"
o assunto quando falamos do uso do Axis no projeto, suas dependecias e etc... mas a dúvida era: Como gerar os stubs com o axis mais recentes 1.7.5+ ?

Com os arquivos.wsdl da versão 4.00 da NF-e, o que eu ja tentei:

- De forma manual com a versão 1.7.5 converter com wsdl2java, porém só consegui utilizando parametro databinding(-d xmlbeans), porém o correto deveria ser databinding(-d adb)
- De forma manual com a versão 1.7.6 converter com wsdl2java, porém só consegui utilizando parametro databinding(-d xmlbeans), porém o correto deveria ser databinding(-d adb)

Consigui converter utilizando xmlbeans como disse, porém minha implementação em código não batia com o que eu esperava devido a forma que as classes eram geradas.
Não conseguia converter utilizando ADB, enfrentava a excessão: org.apache.axis2.schema.SchemaCompilationException: XSD complexType with mix content not supported in ADB
que confirmava o que eu esperava do uso entre xmlbeans e adb.

- Joia vamos tentar de outra forma, recorri ao uso do eclipse Neon v4.6.0 - que por padrão conta com Axis 1.4.

Fiz uso das biblioteca que contem os jars do axis 1.7.6 para Eclipse: Service Archive e Code Generator (ambos plugins para eclipse)

Link que Apache ensina utilizar o axis2 no eclipse
https://axis.apache.org/axis2/java/core/tools/eclipse/wsdl2java-plugin.html

Link que Apache disponibiliza os plugins para eclipse
https://axis.apache.org/axis2/java/core/download.html

Por não estarem nos plugings "válidos" do eclipse o Axis2, então precisamos adicionar 'manualmente', realizando o unzip dentro da pasta dropins que estão localizada dentro
da pasta do eclipse, beleza de boa, só abrir o eclipse novamente ja estara disponível para uso Ctrl+N > Axis2 Wizards. Pois bem, pensei: Com eclipse é sem erro! Agora vai ... mal sabia...
me deparo com a excessão: java.lang.reflect.InvocationTargetException hahahah e também não funcionou com a versão 1.7.5, mesma excessão... pois bem acredito não ser problema
com o Axis desta vez, porém pesquisei muito, muito mesmo a não encontrei solução para este problema

Criei um projeto besta web, importei um wsdl para ele e seguindo o padrão Botão Direito(no wsdl) > Web Services > Generate Client, deixando o Axis1 habilitado, consigo gerar.. pórém por
ser uma versão muito antiga, o ADB deve estar com código antigo, e a sua implementação também é desatualizada... ou seja, das formas que eu conheço nenhuma consegui converter da forma
correta com o ADB em nenhuma das versões testadas....


RESPOSTA DE SAMUEL

Então, eu normalmente faço de duas Maneiras:

1º Eu tenho um Projeto pronto, que utiliza um Plugin do Maven: axis2-wsdl2code-maven-plugin
2º Gero Atraves da IDE IntelliJ

Nessa duas maneiras funcionou com sucesso na versão 1.7.5


POIS BEM.. MÃO NA MASSA ENTENDER COMO FUNCIONA O PLUGIN DO AXIS COM MAVEN....

Para rodar o plugin, obviamente o projeto precisa ser maven, e algumas propriedades no arquivo pom.xml precisam ser adicionadas:



O conteúdo acima, foi a primeira vista da configuração do arquivo que eu tinve, então Samuel deu mais um auxílio apontando como
pode ser a configuração com os arquivos e chegamos ao seguinte para conversão de cada arquivo:



Porém algo ainda estava errado, e ainda havia dúvidas... Mesmo utilzando o plugin wsdl2code, o problema ainda persistia...
org.apache.axis2.schema.SchemaCompilationException: XSD complexType with mix content not supported in ADB

...então caçando mais conteúdo na internet, descobri que o Axis2 não compreende a tag <s:complexType mixed="true">
presente dentro do arquivo wsdl. Solução:

- Primeiro foi alterar o conteúdo para <s:complexType mixed="false">, estas tags estão presentes nos elementos nfeDadosMsg e nfeResultMsg.
Posteriormente isso, a conversão com ADB databinding passou a funcionar pois é o que ele compreende.... porém devido o atributo mixed ter passado para falso,
estes arquivos: NfeDadosMsg.java e NfeResultMsg.java não estavam sendo gerados. "...mais um problema pensei".... então consegui solucionar para duas situações:

1º - Utilizando a conversão direta com wsdl2Java encontrada na bin do Axis
Utiliza-se wsdl2java.bat -uri arquivo.wsdl -o arquivosaida -d adb

2º - Utilizando o plugin axis2-wsdl2code:wsdl2code e a conversão com wsdl2Code configurado no pom.xml
Exemplo do serviço cadconsultacadastro4




Observem:
<id>CadConsultaCadastro4</id>.... com esta propriedade, voce consegue adicionar varios servicos, sendo cada um uma <execution> e executa-los ao mesmo tempo


Situações diferentes podem ocorrer dependendo da versão do Axis utilizada pelo que entendi, pois fui bem a fundo com o assunto como puderam perceber... então espero que
este conteúdo auxilie para solução caso situação parecida aconteça com algum membro ou visitante.

Abaixo links do conteúdo buscado

WSDL2Java Eclipse Plugin
WSDL2Java Guide
Maven2 WSDL2Code Plug-in Guide
Maven2 WSDL2Code Plug-in Documentation
Index of Axis2



Abraços! o/

Esta mensagem foi editada 24 vezes. Última atualização foi em 04/09/2017 08:48:42


Tiago Bergamasco, 25 anos

Computer Scientist pela Centro Universitário Anhanguera
MBA Service-Oriented Architeture (SOA) pela Metrocamp - Ibmec
AngularJS Developer pela Caelum Ensino e Inovação- SP

Ao entrar em contato, por favor identifique-se antes
Site: Arara Tecnologia da Informação



Comercial: 19 996050532

"Uma imagem vale mil palavras. Uma interface vale mil imagens." - Ben Shneiderman
[Email] [WWW]
samuk.exe@hotmail.com

Moderador
[Avatar]

Membro desde: 31/08/2012 18:04:03
Mensagens: 688
Localização: Goiás
Offline

Excelente Tiago, e parabéns pelo empenho em Organizar.

Eu vou alterar todos os meus para seguir o Mesmo Padrão!

Samuel Oliveira
Gerente de Projetos - Autocom Sistemas
Moderador (JavaC - Java Community)
samuk.exe@hotmail.com

Experimente a API que facilita a emissão de NFe/NFC-e-> http://www.javac.com.br/jc/posts/list/2614-projeto-biblioteca-javanfe-com-jaxb-nfe-simples.page
Experimente a API que facilita a emissão de CTe-> http://www.javac.com.br/jc/posts/list/2765-projeto-api-javacte-com-jaxb-cte-simples-v-2000.page

Github - > https://github.com/Samuel-Oliveira
Github Java-NFe -> https://github.com/Samuel-Oliveira/Java_NFe
Github Java-CTe -> https://github.com/Samuel-Oliveira/Java_CTe

Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!
[Email] [WWW]
EliJunior

JavaC Membro

Membro desde: 04/05/2015 21:51:35
Mensagens: 19
Offline

Eu estava passando por esses problemas quando tentei usar o axis2 1.7.4 na nfe 3.10, achei aqui no forum a solução <s:complexType mixed="false"> e não tive mais problemas usando as versões 1.7.4 e 1.7.5.
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team