Cliente em java para serviço em delphi com stdcall

Pessoal, bom dia!

Estou tendo um problema. Tenho uma dll (um serviço) feito em delphi 7. Além dos parametros do metodo ele usa um stdcall (standard call).

O problema é que não estou conseguindo criar o cliente para o mesmo.
Tento fazer e sempre me cai em uma excpetion de AXIS FAULT : bad definitions params.

Alguém pode me indicar qual a melhor forma de implementar esse cliente??

[]'s

O que o stdcall (que é o método tradicional de se declarar um método de uma DLL que pode ser chamado a partir de várias linguagens) tem a ver com Web Services (Axis)?

[quote=thingol]O que o stdcall (que é o método tradicional de se declarar um método de uma DLL que pode ser chamado a partir de várias linguagens) tem a ver com Web Services (Axis)?
[/quote]

Thigol, na verdade eu não entendi muito bem isso do stdcall. A empresa que possui esse sistema e, que criou esse serviço em delphi, me passou que para que meu cliente em java funcionasse eu teria que além dos parametros do metodo passar um parametro do tipo standard call (stdcall).

E é isso que não estou entendendo muito bem.

Tento criar o cliente dessa forma:


  try {  
              String wsURL = "http://server-call/webcliente/WebAgenda.dll/wsdl/IWebagenda?wsdl";  
    
              Object[] params = { id, nome, nasc, sexo, doc, tel, cel, conv, mat, temp};  
    
              Service service = new Service();  
    
              Call call = (Call) service.createCall();  
    
              call.setTargetEndpointAddress(wsURL);  
    
              call.setOperationName("ReceberCliente");  
                
              String ret = (String) call.invoke(params);  
                
              System.out.println("Resultado: " +ret);  
                
          } catch (ServiceException e) {  
              // TODO Auto-generated catch block  
             System.out.println(e.getMessage());  
     e.printStackTrace();  

… no ponto do

String ret = (String) call.invoke(params);

é gerada a exceção mostrada abaixo:

# 0/06/2008 09:18:01 org.apache.axis.utils.JavaUtils isAttachmentSupported  
# WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.  
# ; nested exception is:   
#     org.xml.sax.SAXException: Bad envelope tag:  definitions  
# AxisFault  
# faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException  
# faultSubcode:   
# faultString: org.xml.sax.SAXException: Bad envelope tag:  definitions  
# faultActor:   
# faultNode:   
# faultDetail:   
#     {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Bad envelope tag:  definitions  
#     at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:71)  
#     at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)  
#     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)  
#     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)  
#     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)  
#     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3084)  
#     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:912)  
#     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)  
#     at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)  
#     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)  
#     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)  
#     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)  
#     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)  
#     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)  
#     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)  
#     at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)  
#     at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)  
#     at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)  
#     at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)  
#     at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)  
#     at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)  
#     at org.apache.axis.client.Call.invokeEngine(Call.java:2784)  
#     at org.apache.axis.client.Call.invoke(Call.java:2767)  
#     at org.apache.axis.client.Call.invoke(Call.java:2443)  
#     at org.apache.axis.client.Call.invoke(Call.java:2366)  
#     at org.apache.axis.client.Call.invoke(Call.java:1812)  
#     at TesteClienteWSURL.main(TesteClienteWSURL.java:48)  
#   
#     {http://xml.apache.org/axis/}hostname:desenvolv-03  

E não consegui entender o motivo desse erro.

Foi ai que o pessoal lá da empresa me disseram que se não fosse passando um parametro do tipo standard call nao ia funcionar. Desde então tenho pesquisado no google sobre e não acho muita coisa.

Poderia me dar uma luz??

[]'s

Thigol, estou tirando as dúvidas com um outro moderador aqui neste post antigo que encontrei http://www.guj.com.br/posts/list/0/80393.java#504253

Se souber de algo e puder ajudar.

Seria o caso de tentar JNI ?

stdcall é uma coisa que se põe na declaração do Delphi, não no JNI. (Pelo menos é o que vi depois de fuçar um pouco na Internet).

O problema é que o Delphi deve estar gerando uma interface de web services que não é compatível com o perfil WS-I (que é o que o Java e o .NET têm de suportar). Seria interessante que as interfaces do Delphi fossem regeradas, para poder ser compatíveis com clientes Java e .NET.

[quote=thingol]stdcall é uma coisa que se põe na declaração do Delphi, não no JNI. (Pelo menos é o que vi depois de fuçar um pouco na Internet).

O problema é que o Delphi deve estar gerando uma interface de web services que não é compatível com o perfil WS-I (que é o que o Java e o .NET têm de suportar). Seria interessante que as interfaces do Delphi fossem regeradas, para poder ser compatíveis com clientes Java e .NET.
[/quote]

Desculpe, thingol. Eu que nao postei direito.

Quando eu perguntei se nao era o caso de usar JNI era pra tentar uma integracao com o servico dele atraves do java.

Eu cheguei a esse ponto com a empresa que gerou o serviço, mas eles parecem nao aceitar muito bem o fato do servico deles nao estar compativel.

Mas vou tentando aqui para ver o que vai dar.

Obrigado pela resposta

Estava precisando de uma resposta assim para poder argumentar mais fortemente com eles.

Problemao isso viu. Mas valeu pela ajuda.

Abracos, depois posto aqui a resolucao disso.

[]`s

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 e obrigado pela ajuda.