Java consumindo webservice em Delphi 7

13 respostas
I

Caros colegas,

Será que é possivel consumir um webservice feito em Delphi 7 com Java/Axis.

Já me disseram que o padrao do AXIS é doc/literal e o Delphi 7 é XML/RPC, más que o AXIS também trabalha com RPC, más
pergunto eu: Como faço para ativar isso no cliente Java?

Quando tento gerar as classes via WSDL2JAVA está dando o seguinte erro:

>java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/cgi-bin/acconsclient.exe/wsdl/IacConsClient -p "br…acconsclient.clientws"

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).

log4j:WARN Please initialize the log4j system properly.

WSDLException (at /definitions/binding/operation[1]/input): faultCode=INVALID_WSDL: Element ‘{<a href="http://schemas.xmlsoap.org/wsdl/">http://schemas.xmlsoap.org/wsdl/</a>}input’ contained unexpected attributes: ‘message’:

at com.ibm.wsdl.util.xml.DOMUtils.throwWSDLException(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.parseBindingInput(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.parseBindingOperation(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.parseBinding(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:516)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
    at java.lang.Thread.run(Thread.java:619)

13 Respostas

R

Recentemente tive exatamente o mesmo problema, o Axis(e nem o XFire) reconheciam o WSDL gerado pelo Delphi7 - especificamente este atributo ‘message’-.

A solução que adotei foi o fornecedor re-implementar o webservice em .NET.

R

Rafael Nunes:
Recentemente tive exatamente o mesmo problema, o Axis(e nem o XFire) reconheciam o WSDL gerado pelo Delphi7 - especificamente este atributo ‘message’-.

A solução que adotei foi o fornecedor re-implementar o webservice em .NET.

Rafael Nunes, tudo bom?

Estou exatamente com esse mesmo problema.

E meu fornecedor não está propicio a reescrever esse serviço em outra linguagem. Alguma sugestão? Estou desesperado já… rsrs…

Abraços

R

Na verdade é no próprio Delphi pelo que me informaram, quando ele vai gerar o Web Service, há um checkbox ‘Generare as .NET’(algo do tipo), foi só ele marcar esse checkbox.

Gerado no formato do Delphi7, só conseguiram consumir pelo próprio Delphi.

R

Rafael Nunes:
Na verdade é no próprio Delphi pelo que me informaram, quando ele vai gerar o Web Service, há um checkbox ‘Generare as .NET’(algo do tipo), foi só ele marcar esse checkbox.

Gerado no formato do Delphi7, só conseguiram consumir pelo próprio Delphi.

Você não saberia dizer ao certo onde eu mudo isso no Delphi nao né? A pessoa que criou o serviço ta aqui comigo agora e nao ta achando essa opcao no delphi

:frowning:

R

Nem idéia, meu fornecedor que fez isso.

R

Cara, o negoço tá dificil aqui viu.

O que percebi é que a estrutura e, os schemas, gerados no wsdl do serviço feito em delphi são totalmente diferentes dos que que eu gero em java.

O problema é que não consigo criar nem os esquelos para gerar o cliente pois me gera esse erro:

Error in generating Java from WSDL:  WSDLException (at /definitions/binding/operation/input): faultCode=INVALID_WSDL: Element '{http://schemas.xmlsoap.org/wsdl/}input' contained unexpected attributes: 'message':

Se alguém tiver uma luz ai seria de muita ajuda.

[]'s

R

rbamartins:
O que percebi é que a estrutura e, os schemas, gerados no wsdl do serviço feito em delphi são totalmente diferentes dos que que eu gero em java.

Na verdade esse Schema que ele gera é totalmente diferente de tudo.E só vi ele sendo consumido através do próprio Delphi. Pode pegar qualquer WSDLpúblico(Google, Xmethods, etc), é bem diferente.

Ja tentou gerar com o cliente do Axis2? Esse foi o único teste que não fiz.
Na pior das hipóteses, tenta criar uma requisião SOAP na unha.

R

Rafael Nunes:
rbamartins:
O que percebi é que a estrutura e, os schemas, gerados no wsdl do serviço feito em delphi são totalmente diferentes dos que que eu gero em java.

Na verdade esse Schema que ele gera é totalmente diferente de tudo.E só vi ele sendo consumido através do próprio Delphi. Pode pegar qualquer WSDLpúblico(Google, Xmethods, etc), é bem diferente.

Ja tentou gerar com o cliente do Axis2? Esse foi o único teste que não fiz.
Na pior das hipóteses, tenta criar uma requisião SOAP na unha.

Rafael Nunes, obrigado pela resposta.

Cara ja tentei com o axis2, com o jax-ws, com o axis 1.3 e nada.
Realmente o que ele gera eh diferente de tudo.
Olha o que o thingol me disse nesse post http://www.guj.com.br/posts/list/0/94112.java#504344.

E eh isso que estou argumentando com eles agora, q o servico deles n eh interoperavel.

Ja tentei criar a requisicao na unha tambem (risos) e quando faco, por exemplo, um call.invoke(passandoOsParametros) ele da um erro um pouco diferente mas eh gerado pelo mesmo motivo.
Ele diz q as definicoes das tags nao estao formadas corretamente e nao valida o schema.

Entao eh isso, acho que cheguei no ponto que eu queria para argumentar fortemente com eles.

Obrigado pela atencao e pela ajuda.

Abracos e qualquer coisa estamos aqui.

Como disse no outro post, assim que resolver essa situacao vou postar aqui como gerei o cliente (se funcionar depois que eles recriarem o servico deles, claro)

[]'s

R

Foi exatamente este argumento que utilizei com meu fornecedor, que o serviço disponibilizado por eles não é ‘integrável’ com nenhuma outra tecnologia além da deles.
Até pedi pra me mostrarem um cliente que consumisse o serviço com outra tecnologia além de Delphi.

R

Rafael Nunes:
rbamartins:

E eh isso que estou argumentando com eles agora, q o servico deles n eh interoperavel.

Entao eh isso, acho que cheguei no ponto que eu queria para argumentar fortemente com eles.

Foi exatamente este argumento que utilizei com meu fornecedor, que o serviço disponibilizado por eles não é ‘integrável’ com nenhuma outra tecnologia além da deles.
Até pedi pra me mostrarem um cliente que consumisse o serviço com outra tecnologia além de Delphi.

É isso, estou passando a questão para eles e ver o que vão decidir.

Abraços e valeu pela discussão.

O bom é que conseguimos chegar a um ponto em comum.

R

Só para constar.

Realmente, criar o cliente de um serviço feito em Delphi não foi possível, pelos problemas relatados neste post.
A solução que encontramos foi a que meu fornecedo criou o serviço em .NET para que eu pudesse consumi-lo em JAVA.

Abraços

R

rbamartins:
Só para constar.

Realmente, criar o cliente de um serviço feito em Delphi não foi possível, pelos problemas relatados neste post.
A solução que encontramos foi a que meu fornecedo criou o serviço em .NET para que eu pudesse consumi-lo em JAVA.

Abraços

Através do Delphi mesmo ele fez essa geração?
Ou utilizou o Visual Studio e o framework .NET?

R

Rafael Nunes:
rbamartins:
Só para constar.

Realmente, criar o cliente de um serviço feito em Delphi não foi possível, pelos problemas relatados neste post.
A solução que encontramos foi a que meu fornecedo criou o serviço em .NET para que eu pudesse consumi-lo em JAVA.

Abraços

Através do Delphi mesmo ele fez essa geração?
Ou utilizou o Visual Studio e o framework .NET?

Opa amigo…

ele usou o visual studio mesmo.

Me informaram que tinha como no Delphi alterar a configuração para que se alterasse o padrão de geração dos schemas do serviço para que atendesse ao WS-I (usado pelo JAVA e .NET), mas parece que não souberam fazer.
(se alguém tiver alguma informação sobre isso é bom postar para divulgar esse conhecimento)

Abraços

Criado 25 de janeiro de 2008
Ultima resposta 4 de jul. de 2008
Respostas 13
Participantes 3