From a quick glance, I can't see you engaging the addressing module, I
think, perhaps you should be.
If you're not doing that, the error message sort of makes sense as
there wouldn't be
an action in the message.
HTH,
David
On 16/04/07, shantanu chawla <[EMAIL PROTECTED]> wrote:
> I am creating a client in java using axis2 1.1.1 to test
> interoperability with WCF web services. My WCF web service is based on
> wsHttpBinding. When I am trying to call its methods I am getting this
> axis fault error.
>
> org.apache.axis2.AxisFault: The SOAP action specified on the message,
> '', does not match the HTTP SOAP Action,
> 'http://tempuri.org/IMyService/MyOperation1'.
>
> My wsdl is
>
> <?xml version="1.0" encoding="utf-8" ?>
> <wsdl:definitions name="MyService"
> targetNamespace="http://tempuri.org/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:tns="http://tempuri.org/"
> xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
> xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
> xmlns:wsa10="http://www.w3.org/2005/08/addressing"
> xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
> <wsp:Policy wsu:Id="WSHttpBinding_IMyService_policy">
> <wsp:ExactlyOne>
> <wsp:All>
> <wsaw:UsingAddressing />
> </wsp:All>
> </wsp:ExactlyOne>
> </wsp:Policy>
> <wsdl:types>
> <xsd:schema targetNamespace="http://tempuri.org/Imports">
> <xsd:import
> schemaLocation="http://svr11.lab.interface.local/WCFService/Service.svc?xsd=xsd0"
> namespace="http://tempuri.org/" />
> <xsd:import
> schemaLocation="http://svr11.lab.interface.local/WCFService/Service.svc?xsd=xsd1"
> namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
> <xsd:import
> schemaLocation="http://svr11.lab.interface.local/WCFService/Service.svc?xsd=xsd2"
> namespace="http://schemas.datacontract.org/2004/07/" />
> </xsd:schema>
> </wsdl:types>
> <wsdl:message name="IMyService_MyOperation1_InputMessage">
> <wsdl:part name="parameters" element="tns:MyOperation1" />
> </wsdl:message>
> <wsdl:message name="IMyService_MyOperation1_OutputMessage">
> <wsdl:part name="parameters" element="tns:MyOperation1Response" />
> </wsdl:message>
> <wsdl:message name="IMyService_MyOperation2_InputMessage">
> <wsdl:part name="parameters" element="tns:MyOperation2" />
> </wsdl:message>
> <wsdl:message name="IMyService_MyOperation2_OutputMessage">
> <wsdl:part name="parameters" element="tns:MyOperation2Response" />
> </wsdl:message>
> <wsdl:portType name="IMyService">
> <wsdl:operation name="MyOperation1">
> <wsdl:input wsaw:Action="http://tempuri.org/IMyService/MyOperation1"
> message="tns:IMyService_MyOperation1_InputMessage" />
> <wsdl:output
> wsaw:Action="http://tempuri.org/IMyService/MyOperation1Response"
> message="tns:IMyService_MyOperation1_OutputMessage" />
> </wsdl:operation>
> <wsdl:operation name="MyOperation2">
> <wsdl:input wsaw:Action="http://tempuri.org/IMyService/MyOperation2"
> message="tns:IMyService_MyOperation2_InputMessage" />
> <wsdl:output
> wsaw:Action="http://tempuri.org/IMyService/MyOperation2Response"
> message="tns:IMyService_MyOperation2_OutputMessage" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="WSHttpBinding_IMyService" type="tns:IMyService">
> <wsp:PolicyReference URI="#WSHttpBinding_IMyService_policy" />
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
> <wsdl:operation name="MyOperation1">
> <soap12:operation
> soapAction="http://tempuri.org/IMyService/MyOperation1"
> style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="MyOperation2">
> <soap12:operation
> soapAction="http://tempuri.org/IMyService/MyOperation2"
> style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="MyService">
> <wsdl:port name="WSHttpBinding_IMyService"
> binding="tns:WSHttpBinding_IMyService">
> <soap12:address
> location="http://svr11.lab.interface.local/WCFService/Service.svc" />
> <wsa10:EndpointReference>
>
> <wsa10:Address>http://svr11.lab.interface.local/WCFService/Service.svc</wsa10:Address>
> </wsa10:EndpointReference>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> and the java code of the stub generated by axis is
>
> public void startMyOperation1(
>
> org.tempuri.MyServiceStub.MyOperation1 param4,
>
> final org.tempuri.MyServiceCallbackHandler callback)
>
> throws java.rmi.RemoteException{
>
> org.apache.axis2.client.OperationClient _operationClient
> = _serviceClient.createClient(_operations[0].getName());
>
> _operationClient.getOptions().setAction("http://tempuri.org/IMyService/MyOperation1");
>
> _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
>
>
>
> // create SOAP envelope with that payload
> org.apache.axiom.soap.SOAPEnvelope env=null;
>
> //Style is Doc.
>
>
> env =
> toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
> param4,
>
> optimizeContent(new javax.xml.namespace.QName("",
> "MyOperation1")));
>
> //adding SOAP headers
> _serviceClient.addHeadersToEnvelope(env);
> // create message context with that soap envelope
> org.apache.axis2.context.MessageContext _messageContext = new
> org.apache.axis2.context.MessageContext() ;
> _messageContext.setEnvelope(env);
>
> // add the message contxt to the operation client
> _operationClient.addMessageContext(_messageContext);
>
>
>
> _operationClient.setCallback(new
> org.apache.axis2.client.async.Callback() {
> public void onComplete(
> org.apache.axis2.client.async.AsyncResult
> result) {
> java.lang.Object object =
> fromOM(result.getResponseEnvelope().getBody().getFirstElement(),
>
> org.tempuri.MyServiceStub.MyOperation1Response.class,
>
> getEnvelopeNamespaces(result.getResponseEnvelope())
> );
>
>
callback.receiveResultMyOperation1((org.tempuri.MyServiceStub.MyOperation1Response)
> object);
> }
>
> public void onError(java.lang.Exception e) {
> callback.receiveErrorMyOperation1(e);
> }
> });
>
>
> org.apache.axis2.util.CallbackReceiver _callbackReceiver =
> null;
> if ( _operations[0].getMessageReceiver()==null &&
> _operationClient.getOptions().isUseSeparateListener()) {
> _callbackReceiver = new
> org.apache.axis2.util.CallbackReceiver();
> _operations[0].setMessageReceiver(
> _callbackReceiver);
> }
>
> //execute the operation client
> _operationClient.execute(false);
>
> }
>
> clearly it is sending SOAP Action which is matching with SOAP action
> in the wsdl for the method.
>
> Can any one help on this issue?
>
> Thanks
>
> Shantanu
>
> --
> Graduate Student
> Department of Computer Science,
> San Diego State University
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
David Illsley - IBM Web Services Development
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]