users@jax-rpc.java.net

Re: dynamic web service invocation

From: kathy walsh <Kathleen.Walsh_at_Sun.COM>
Date: Fri, 23 Apr 2004 10:08:14 -0400

Hi-
This is a users group for the jaxrpc implementation developed by Sun-
You will get more specific information if you send your question to an
axis newsgroup

However, a quick look at the error and your client program suggests that the
soapAction uri is set incorrectly-

Looking at your wsdl I see soapAction -
soapAction='http://tempuri.org/action/clsDNMsg.UpdateDNStatus'

Try setting the soapAction uri to this instead of null-
Regards,
Kathy

R Sridhar wrote:

> Hi ,
>
> I would like to invoke a webservice onfly withou creating the stubs. I
> am using the axis tool kit.
> I am able to invoke the webservice dynamically wthout generating stubs
> if the service is developed in java.
> But when i am trying to invoke the service developed in VB or some
> thing else i am not able to invoke the
> service and getting exception saying that invalid name space.
>
> *The code snippet workig fine for the java webservice is*
> **
> **
> public static void main(String[] args)
> {
> try{
> String ENCODING_STYLE_PROPERTY
> = "javax.xml.rpc.encodingstyle.namespace.uri";
> String NS_XSD = "http://www.w3.org/2001/XMLSchema";
> String BODY_NAMESPACE_VALUE =
> "http://localhost:8080/axis/services/Mul";
>
>
> ServiceFactory factory = ServiceFactory.newInstance();
> Service service = factory.createService(new QName("Mul"));
> QName port = new QName("Mul");
> Call call = service.createCall(port);
> call.setTargetEndpointAddress("http://localhost:8080/axis/services/Mul?wsdl");
>
>
> call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
> call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
> call.setProperty(ENCODING_STYLE_PROPERTY,"http://schemas.xmlsoap.org/soap/encoding/");
>
> QName QNAME_TYPE_INT = new QName(NS_XSD, "int");
> call.setReturnType(QNAME_TYPE_INT);
>
> call.setOperationName(new QName(BODY_NAMESPACE_VALUE,"multiply"));
>
> call.addParameter("in0", QNAME_TYPE_INT,ParameterMode.IN);
> call.addParameter("in1", QNAME_TYPE_INT,ParameterMode.IN);
>
> Integer[] params = new Integer[2];
> params[0]=new Integer(2);
> params[1]=new Integer(3);
> System.out.println(call.invoke(params));
> }catch(Exception e){
> e.printStackTrace();
> }
> }
>
>
> the service wsdl file is
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions
> targetNamespace="http://172.16.2.71:8080/axis/services/Mul"
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:apachesoap="http://xml.apache.org/xml-soap"
> xmlns:impl="http://172.16.2.71:8080/axis/services/Mul"
> xmlns:intf="http://172.16.2.71:8080/axis/services/Mul"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <wsdl:message name="multiplyRequest">
> <wsdl:part name="in0" type="xsd:int"/>
> <wsdl:part name="in1" type="xsd:int"/>
> </wsdl:message>
> <wsdl:message name="multiplyResponse">
> <wsdl:part name="multiplyReturn" type="xsd:int"/>
> </wsdl:message>
> <wsdl:portType name="Mul">
> <wsdl:operation name="multiply" parameterOrder="in0 in1">
> <wsdl:input message="impl:multiplyRequest" name="multiplyRequest"/>
> <wsdl:output message="impl:multiplyResponse"
> name="multiplyResponse"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="MulSoapBinding" type="impl:Mul">
> <wsdlsoap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/
> <http://schemas.xmlsoap.org/soap/http%22/>>
> <wsdl:operation name="multiply">
> <wsdlsoap:operation soapAction=""/>
> <wsdl:input name="multiplyRequest">
> <wsdlsoap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://172.16.2.71:8080/axis/services/Mul" use="encoded"/>
> </wsdl:input>
> <wsdl:output name="multiplyResponse">
> <wsdlsoap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://172.16.2.71:8080/axis/services/Mul" use="encoded"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="Mul">
> <wsdl:port binding="impl:MulSoapBinding" name="Mul">
> <wsdlsoap:address
> location="http://172.16.2.71:8080/axis/services/Mul"/
> <http://172.16.2.71:8080/axis/services/Mul%22/>>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> *The code snippet for invoking the VB service is*
> public static void main(String[] args)
> {
> try{
> String ENCODING_STYLE_PROPERTY
> = "javax.xml.rpc.encodingstyle.namespace.uri";
> String NS_XSD = "http://www.w3.org/2001/XMLSchema";
> String BODY_NAMESPACE_VALUE = "http://tempuri.org/wsdl/";
>
>
> ServiceFactory factory = ServiceFactory.newInstance();
> Service service = factory.createService(new QName("DNPost"));
> QName port = new QName("clsDNMsgSoapPort");
> Call call = service.createCall(port);
> call.setTargetEndpointAddress("http://pvinod/DN/DNPost.WSDL");
>
> call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
> call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
> call.setProperty(ENCODING_STYLE_PROPERTY,"http://schemas.xmlsoap.org/soap/encoding/");
>
> QName QNAME_TYPE_INT = new QName(NS_XSD, "int");
> QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
> call.setReturnType(QNAME_TYPE_INT);
>
> call.setOperationName(new
> QName(BODY_NAMESPACE_VALUE,"UpdateDNStatus"));
>
> call.addParameter("strUserID", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strPassword", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strApplicationID",
> QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strMMSID", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strDNID", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strSHORTCODE", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strStatus", QNAME_TYPE_STRING,ParameterMode.IN);
> call.addParameter("strError", QNAME_TYPE_STRING,ParameterMode.INOUT);
>
> String str = new String();
> String[] params = { " "," "," "," "," "," "," ",str};
> System.out.println(call.invoke(params));
> }catch(Exception e){
> e.printStackTrace();
> }
> }
>
>
> the service wsdl file is
> <?xml version='1.0' encoding='UTF-8' ?>
> <!-- Generated 04/09/04 by Microsoft SOAP Toolkit WSDL File
> Generator, Version 1.02.813.0 -->
> <definitions name ='DNPost' targetNamespace =
> 'http://tempuri.org/wsdl/'
> xmlns:wsdlns='http://tempuri.org/wsdl/'
> xmlns:typens='http://tempuri.org/type'
> xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
> xmlns:xsd='http://www.w3.org/2001/XMLSchema'
> xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
> xmlns='http://schemas.xmlsoap.org/wsdl/'>
> <types>
> <schema targetNamespace='http://tempuri.org/type'
> xmlns='http://www.w3.org/2001/XMLSchema'
> xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
> xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
> elementFormDefault='qualified'>
> </schema>
> </types>
> <message name='clsDNMsg.UpdateDNStatus'>
> <part name='strUserID' type='xsd:string'/>
> <part name='strPassword' type='xsd:string'/>
> <part name='strApplicationID' type='xsd:string'/>
> <part name='strMMSID' type='xsd:string'/>
> <part name='strDNID' type='xsd:string'/>
> <part name='strSHORTCODE' type='xsd:string'/>
> <part name='strStatus' type='xsd:string'/>
> <part name='strError' type='xsd:string'/>
> </message>
> <message name='clsDNMsg.UpdateDNStatusResponse'>
> <part name='Result' type='xsd:short'/>
> <part name='strError' type='xsd:string'/>
> </message>
> <portType name='clsDNMsgSoapPort'>
> <operation name='UpdateDNStatus' parameterOrder='strUserID
> strPassword strApplicationID strMMSID strDNID strSHORTCODE strStatus
> strError'>
> <input message='wsdlns:clsDNMsg.UpdateDNStatus' />
> <output message='wsdlns:clsDNMsg.UpdateDNStatusResponse' />
> </operation>
> </portType>
> <binding name='clsDNMsgSoapBinding' type='wsdlns:clsDNMsgSoapPort' >
> <stk:binding preferredEncoding='UTF-8'/>
> <soap:binding style='rpc'
> transport='http://schemas.xmlsoap.org/soap/http' />
> <operation name='UpdateDNStatus' >
> <soap:operation
> soapAction='http://tempuri.org/action/clsDNMsg.UpdateDNStatus' />
> <input>
> <soap:body use='encoded' namespace='http://tempuri.org/message/'
> encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
> </input>
> <output>
> <soap:body use='encoded' namespace='http://tempuri.org/message/'
> encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
> </output>
> </operation>
> </binding>
> <service name='DNPost' >
> <port name='clsDNMsgSoapPort' binding='wsdlns:clsDNMsgSoapBinding' >
> <soap:address location='http://pvinod/DN/DNPost.WSDL' />
> </port>
> </service>
> </definitions>
> In this case i am getting the following error
>
>
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
> faultString: WSDLReader: The operation requested in the Soap message
> with soapAction (null) isn't defined in the WSDL file. Thi
> s may be because it is in the wrong namespace or has incorrect case
> faultActor: null
> faultDetail:
> errorInfo:
> <mserror:returnCode>-2147467259</mserror:returnCode><mserror:callStack><mserror:callElement><mserror:component
> >WSDLReader</mserror:component><mserror:description>The operation
> requested in the Soap message with soapAction (null) isn't defi
> ned in the WSDL file. This may be because it is in the wrong
> namespace or has incorrect case</mserror:description><mserror:retur
> nCode>-2147467259</mserror:returnCode></mserror:callElement></mserror:callStack>
>
> WSDLReader: The operation requested in the Soap message with
> soapAction (null) isn't defined in the WSDL file. This may be becau
> se it is in the wrong namespace or has incorrect case
> at
> org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:135)
> at
> org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:942)
> at
> org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:559)
> at
> org.apache.xerces.impl.XMLNamespaceBinder.handleEndElement(XMLNamespaceBinder.java:853)
> at
> org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.java:643)
> at
> org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2978)
> at
> org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:918)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.handleEndElement(XMLDocumentFragmentScannerImpl.java:1145)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:988)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImp
> l.java:1446)
> at
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:333)
> at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:529)
> at
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:585)
> at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
> at
> org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1148)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at
> org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:232)
> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:546)
> at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
> at org.apache.axis.client.Call.invokeEngine(Call.java:2163)
> at org.apache.axis.client.Call.invoke(Call.java:2131)
> at org.apache.axis.client.Call.invoke(Call.java:1878)
> at org.apache.axis.client.Call.invoke(Call.java:1804)
> at org.apache.axis.client.Call.invoke(Call.java:1340)
> at T1.main(T1.java:72)
>
> please help in solving this
>
> <http://valuelabs.com>
>
>
> *R Sridhar Reddy*
> /Software Engineer/ *ValueLabs*
> Plot No 1359,
> Road No 45,
> Jubilee Hills - HYD
> rsridhar_at_valuelabs.net <mailto:rsridhar_at_valuelabs.net>
> tel:
> fax:
> mobile: 040-23560-0861/2/3
> 040-2355-3309
> 9849103458
>
>
>
>
>
>
>
>
>
> /Signature powered by Plaxo/ <http://www.plaxo.com/signature> /Want a
> signature like this?/ <http://www.plaxo.com/signature>
>
> /Add me to your address book.../
> <https://www.plaxo.com/add_me?u=4295085990&v0=235298&k0=2046327013>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jax-rpc.dev.java.net
For additional commands, e-mail: users-help_at_jax-rpc.dev.java.net