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 Jim Dibble <jd...@amberpoint.com> on 2003/05/01 00:51:04 UTC

RE: No such operation error

Are you qualifying the operation name with the target namespace
(http://repository.towertech.com/)?  Some web service platforms are
quite picky about including the namespace, although I don't think that
axis usually is.  However, the error message for a missing namespace
often looks like the one that you saw.

Jim

-----Original Message-----
From: LCarreon@towertechnology.com.au
[mailto:LCarreon@towertechnology.com.au] 
Sent: Wednesday, July 30, 2003 6:22 PM
To: axis-user@ws.apache.org
Subject: No such operation error

Can someone please give me a clue why I'm getting the error message "No
such operation 'name'" with one of my webservice methods.  I'm getting
this
problem both in Axis 1.0 and Axis 1.1 which are integrated into JBoss
3.2.1
and 3.2.2, respectively.

Here is what I have done:
1. Took two WSDL's generated from Visual Studio .NET 1.1.  Note that
both
WSDL's use the RPC style service.  One WSDL contains one service with
three
methods while the other one contains one service with one method.  See
below for the contents of the two WSDL files.
2. Generated Java code from the two WSDL's using WSDL2Java using the
following options "-o -s -v".
3. Filled in the implementation classes of each service and compiled all
the Java code.
4. Deployed the server side code.  Note that the WSDD generated by
WSDL2Java is referring to the implementation class due to the -s option
on
WSDL2Java.
5. Created a .NET client and a Java client.  Note that the Java client
is
using the locator and stub classes generated by WSDL2Java.  Both clients
use the login and logout method from the first service and the
getRendition
method from the second service.
6. Tested both clients.  The .NET client can successfully invoke and
receive replies for all three methods it is calling while the Java
client
is failing on the getRendition method from the second service.  The
error
message received is "No such operation 'getRendition'".  Note that I
have
tested both clients against Axis 1.0 and Axis 1.1 with the same results.

Any help will be very much appreciated.

Here is the content of the first WSDL file:

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap
="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="
http://www.w3.org/2001/XMLSchema" xmlns:s0="
http://repository.towertech.com/" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="
http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="
http://repository.towertech.com/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema targetNamespace="http://repository.towertech.com/">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/" />
      <s:complexType name="ArrayOfTTNameValue">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s0:TTNameValue[]" ref
="soapenc:arrayType" xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/" />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="TTNameValue">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="m_Name" type
="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="m_Value" type
="s:string" />
        </s:sequence>
      </s:complexType>
    </s:schema>
  </types>
  <message name="loginSoapIn">
    <part name="userID" type="s:string" />
    <part name="password" type="s:string" />
    <part name="options" type="s0:ArrayOfTTNameValue" />
  </message>
  <message name="loginSoapOut">
    <part name="loginResult" type="s:string" />
  </message>
  <message name="logoutSoapIn">
    <part name="license" type="s:string" />
  </message>
  <message name="logoutSoapOut" />
  <message name="insertSoapIn">
    <part name="license" type="s:string" />
    <part name="appName" type="s:string" />
    <part name="columns" type="s0:ArrayOfTTNameValue" />
  </message>
  <message name="insertSoapOut">
    <part name="license" type="s:string" />
  </message>
  <portType name="Service1Soap">
    <operation name="login">
      <input message="s0:loginSoapIn" />
      <output message="s0:loginSoapOut" />
    </operation>
    <operation name="logout">
      <input message="s0:logoutSoapIn" />
      <output message="s0:logoutSoapOut" />
    </operation>
    <operation name="insert" parameterOrder="license appName columns">
      <input message="s0:insertSoapIn" />
      <output message="s0:insertSoapOut" />
    </operation>
  </portType>
  <binding name="Service1Soap" type="s0:Service1Soap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style
="rpc" />
    <operation name="login">
      <soap:operation soapAction="http://repository.towertech.com/login"
style="rpc" />
      <input>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>
    <operation name="logout">
      <soap:operation
soapAction="http://repository.towertech.com/logout"
style="rpc" />
      <input>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>
    <operation name="insert">
      <soap:operation
soapAction="http://repository.towertech.com/insert"
style="rpc" />
      <input>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>
  </binding>
  <service name="Service1">
    <port name="Service1Soap" binding="s0:Service1Soap">
      <soap:address
location="http://localhost/WebService1/Service1.asmx"
/>
    </port>
  </service>
</definitions>

Here is the content of the second WSDL file:

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap
="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="
http://www.w3.org/2001/XMLSchema" xmlns:s0="
http://repository.towertech.com/" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="
http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="
http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="
http://repository.towertech.com/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema targetNamespace="http://repository.towertech.com/">
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
      <s:import namespace="http://schemas.xmlsoap.org/wsdl/" />
      <s:complexType name="ArrayOfTTNameValue">
        <s:complexContent mixed="false">
          <s:restriction base="soapenc:Array">
            <s:attribute d7p1:arrayType="s0:TTNameValue[]" ref
="soapenc:arrayType" xmlns:d7p1="http://schemas.xmlsoap.org/wsdl/" />
          </s:restriction>
        </s:complexContent>
      </s:complexType>
      <s:complexType name="TTNameValue">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="m_Name" type
="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="m_Value" type
="s:string" />
        </s:sequence>
      </s:complexType>
    </s:schema>
  </types>
  <message name="getRenditionSoapIn">
    <part name="license" type="s:string" />
    <part name="docID" type="s:string" />
    <part name="pageNum" type="s:string" />
    <part name="subPageNum" type="s:string" />
    <part name="renditionType" type="s:string" />
    <part name="options" type="s0:ArrayOfTTNameValue" />
  </message>
  <message name="getRenditionSoapOut">
    <part name="getRenditionResult" type="s:base64Binary" />
  </message>
  <portType name="Service2Soap">
    <operation name="getRendition">
      <input message="s0:getRenditionSoapIn" />
      <output message="s0:getRenditionSoapOut" />
    </operation>
  </portType>
  <binding name="Service2Soap" type="s0:Service2Soap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style
="rpc" />
    <operation name="getRendition">
      <soap:operation soapAction="
http://repository.towertech.com/getRendition" style="rpc" />
      <input>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body use="encoded" namespace="
http://repository.towertech.com/" encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>
  </binding>
  <service name="Service2">
    <port name="Service2Soap" binding="s0:Service2Soap">
      <soap:address
location="http://localhost/WebService2/Service2.asmx"
/>
    </port>
  </service>
</definitions>