You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by F Chew <mi...@hotmail.com> on 2004/01/07 07:16:40 UTC
WSIF - Method Not Found, Calling .Net Webservice
Hi there.
I am trying to invoke a .Net webservice using WSIF but encountered a "Method
was not found" error below:
=============================================================
F:\Apache\wsif-2.0>java org.tempuri.Run
- WSIF0006W: Multiple WSIFProvider found supporting the same namespace URI
'http://schemas.xmlsoap.org/wsdl/soap/'. Found
('org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis,
org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP')
- WSIF0007I: Using WSIFProvider
'org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis'
for namespaceURI 'http://schemas.xmlsoap.org/wsdl/soap/'
Error while executing sample, received an exception from WSIF; details:
org.apache.wsif.WSIFException: Method getServiceDtls(class java.lang.String)
was not found in portType {http://tempuri.org/}ServiceSoap
at
org.apache.wsif.base.WSIFClientProxy.findMatchingOperation(Unknown Source)
at org.apache.wsif.base.WSIFClientProxy.invoke(Unknown Source)
at $Proxy0.getServiceDtls(Unknown Source)
at org.tempuri.Run.main(Run.java:52)
=============================================================
Not sure if you could help but to give you some background, I have extracted
some code from my application in the sections below.
My Run.java is written similar to the SimpleSoap.java sample in the WSIF
website as follows:
=============================================================
package org.tempuri;
import org.apache.wsif.WSIFService;
import org.apache.wsif.WSIFServiceFactory;
import org.apache.wsif.WSIFException;
import java.rmi.RemoteException;
import org.tempuri.ServiceSoap;
public class Run {
public static void main(String[] args) {
try {
// create a service factory
WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
// parse WSDL
WSIFService service =
factory.getService(
"http://ma4is_win2003/niftyws/service.asmx?WSDL",
null,
null,
"http://tempuri.org/",
"ServiceSoap");
// create the stub
ServiceSoap stub =
(ServiceSoap) service.getStub(
ServiceSoap.class);
// do the invocation
ServiceDtlsResult ret = stub.getServiceDtls("91234567");
} catch (WSIFException we) {
System.out.println(
"Error while executing sample, received an exception from
WSIF; details:");
we.printStackTrace();
} catch (RemoteException re) {
System.out.println(
"Error while executing sample, received an exception due to
remote invocation; details:");
re.printStackTrace();
}
}
=============================================================
The interface file ServiceSoap.java generated by Axis WSDL2Java is as
follows:
=============================================================
/**
* ServiceSoap.java
*
* This file was auto-generated from WSDL
* by the Apache Axis WSDL2Java emitter.
*/
package org.tempuri;
public interface ServiceSoap extends java.rmi.Remote {
public org.tempuri.ServiceDtlsResult getServiceDtls(java.lang.String
sService) throws java.rmi.RemoteException;
public org.tempuri.ServiceComponentResult
getServiceComponents(java.lang.String sService) throws
java.rmi.RemoteException;
public org.tempuri.StandardStringResult
validateCustIdNDOBWithService(java.lang.String sService, java.lang.String
sCustID, java.lang.String sCustIDType, java.lang.String sDOB) throws
java.rmi.RemoteException;
}
=============================================================
The webservice's sample SOAP request is as follows:
=============================================================
POST /niftyws/service.asmx HTTP/1.1
Host: ma4is_win2003
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetServiceDtls"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetServiceDtls xmlns="http://tempuri.org/">
<sService>string</sService>
</GetServiceDtls>
</soap:Body>
</soap:Envelope>
=============================================================
A discrepancy I see is that the first letter for the method
getServiceDtls(class java.lang.String), i.e. 'g', is different from that of
the tag <GetServiceDtls xmlns="http://tempuri.org/">, i.e. 'G', in the soap
request document.
I'm not sure if this is the problem.
Appreciate any advice.
Regards,
Fabian Chew.
_________________________________________________________________
Keep track of Singapore & Malaysia stock prices.
http://www.msn.com.sg/money/