Hi Alex,
it looks like you are using two different service factories - an ObjectServiceFactory on the server end and an XmlBeansServiceFactory on the client end. Since they have different default settings you're getting a mismatch. Try using an OSF:

ObjectServiceFactory xsf = new ObjectServiceFactory();
... other code goes here

- Dan


[EMAIL PROTECTED] wrote:
Hi - I'm trying to get our projects working using XFire, but am having problems getting it running, which I can't resolve. Please help! (Sorry for the long post, but there seemed more chance of a response if all salient information was included in the question)

I have wsdl available from Tomcat (see end of email). I am trying to call a service method using the Xfire client, but get :

org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Invalid operation: {http://msl.nominet.uk}in0 org.codehaus.xfire.fault.XFireFault: Invalid operation: {http://msl.nominet.uk}in0

generated from the following SOAP request :

POST /MslTestService/MslTestService HTTP/1.1
SOAPAction: ""
Content-Type: text/xml; charset=UTF-8
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; XFire Client +http://xfire.codehaus.org)
Host: localhost:5678
Expect: 100-continue
Content-Length: 400

<?xml version="1.0" encoding="UTF-8" ?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soap:Body><in0 xmlns="http://msl.nominet.uk";><userId xsi:nil="true"></userId><userName>root</userName><userPassword>root</userPassword><userType>1</userType></in0></soap:Body></soap:Envelope>

generated by the following client code :

        XmlBeansServiceFactory xsf = new XmlBeansServiceFactory();
Service serviceModel = xsf.create(IMslServerInterfaceToGlue.class, "MslTestService", "http://msl.nominet.uk";, new HashMap());
        IMslServerInterfaceToGlue client =
(IMslServerInterfaceToGlue) new XFireProxyFactory().create(serviceModel, "http://localhost:5678/MslTestService/MslTestService";);

client.logIn(new UserDetails("root", "root", UserDetails.NOMINET_OPERATOR));


The service is generated by the following xfire-servlet.xml :

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/*">
                    <ref bean="msl"/>
                </entry>
            </map>
        </property>
    </bean>

<bean id="msl" class="org.codehaus.xfire.spring.remoting.XFireExporter">
        <property name="serviceFactory">
            <ref bean="xfire.serviceFactory"/>
        </property>
        <property name="xfire">
            <ref bean="xfire"/>
        </property>
        <property name="serviceBean">
            <ref bean="mslServerBean"/>
        </property>
        <property name="serviceClass">
            <value>uk.nominet.msl.IMslServerInterfaceToGlue</value>
        </property>
        <property name="name">
            <value>MslTestService</value>
        </property>
        <property name="namespace">
            <value>http://msl.nominet.uk</value>
        </property>
    </bean>

    <bean id="mslServerBean" class="uk.nominet.msl.server.MslServer"/>

The WSDL is as follows :

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"; xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding"; xmlns:tns="http://msl.nominet.uk"; xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://msl.nominet.uk";>
  <wsdl:types>
<xsd:schema targetNamespace="http://msl.nominet.uk"; elementFormDefault="qualified" attributeFormDefault="qualified">
      <xsd:complexType name="UserDetails">
        <xsd:sequence>
<xsd:element name="userId" type="xsd:int" minOccurs="0" nillable="true" /> <xsd:element name="userName" type="xsd:string" minOccurs="0" nillable="true" /> <xsd:element name="userPassword" type="xsd:string" minOccurs="0" nillable="true" />
          <xsd:element name="userType" type="xsd:int" minOccurs="0" />

        </xsd:sequence>
      </xsd:complexType>
      <xsd:element name="logIn">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="in0" type="tns:UserDetails" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:complexType name="SecurityToken">
        <xsd:sequence>
<xsd:element name="hash" type="xsd:string" minOccurs="0" nillable="true" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:element name="logInResponse">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="out" type="tns:SecurityToken" nillable="true" minOccurs="1" maxOccurs="1" />

          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:complexType name="MslException" />
      <xsd:element name="MslException" type="tns:MslException" />
      <xsd:complexType name="ArrayOfString">
        <xsd:sequence>
<xsd:element name="string" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>

      </xsd:complexType>
      <xsd:element name="invokeMethod">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="in0" type="tns:SecurityToken" nillable="true" minOccurs="1" maxOccurs="1" /> <xsd:element name="in1" type="xsd:string" nillable="true" minOccurs="1" maxOccurs="1" /> <xsd:element name="in2" type="tns:ArrayOfString" nillable="true" minOccurs="1" maxOccurs="1" /> <xsd:element name="in3" type="xsd:ArrayOfAnyType" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>

        </xsd:complexType>
      </xsd:element>
      <xsd:element name="invokeMethodResponse">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="out" type="xsd:anyType" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:element name="isTokenValid">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="in0" type="tns:SecurityToken" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="isTokenValidResponse">
        <xsd:complexType>

          <xsd:sequence>
<xsd:element name="out" type="xsd:boolean" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="logOut">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="in0" type="tns:SecurityToken" nillable="true" minOccurs="1" maxOccurs="1" />

          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="logOutResponse">
        <xsd:complexType />
      </xsd:element>
      <xsd:element name="getCurrentUser">
        <xsd:complexType>
          <xsd:sequence>

<xsd:element name="in0" type="tns:SecurityToken" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="getCurrentUserResponse">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="out" type="xsd:anyType" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>

        </xsd:complexType>
      </xsd:element>
      <xsd:element name="getMatchingUsers">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="in0" type="tns:UserDetails" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

      <xsd:complexType name="ArrayOfUserDetails">
        <xsd:sequence>
<xsd:element name="UserDetails" type="tns:UserDetails" nillable="true" minOccurs="0" maxOccurs="unbounded" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:element name="getMatchingUsersResponse">
        <xsd:complexType>
          <xsd:sequence>
<xsd:element name="out" type="tns:ArrayOfUserDetails" nillable="true" minOccurs="1" maxOccurs="1" />

          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="confirmServerIsUp">
        <xsd:complexType />
      </xsd:element>
      <xsd:element name="confirmServerIsUpResponse">
        <xsd:complexType>
          <xsd:sequence>

<xsd:element name="out" type="xsd:string" nillable="true" minOccurs="1" maxOccurs="1" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" attributeFormDefault="qualified">
      <xsd:complexType name="ArrayOfAnyType">
        <xsd:sequence>
<xsd:element name="anyType" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded" />

        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="confirmServerIsUpResponse">
<wsdl:part element="tns:confirmServerIsUpResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="confirmServerIsUpRequest">
    <wsdl:part element="tns:confirmServerIsUp" name="parameters" />

  </wsdl:message>
  <wsdl:message name="isTokenValidResponse">
    <wsdl:part element="tns:isTokenValidResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="invokeMethodResponse">
    <wsdl:part element="tns:invokeMethodResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="logOutRequest">
    <wsdl:part element="tns:logOut" name="parameters" />

  </wsdl:message>
  <wsdl:message name="logOutResponse">
    <wsdl:part element="tns:logOutResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="invokeMethodRequest">
    <wsdl:part element="tns:invokeMethod" name="parameters" />
  </wsdl:message>
  <wsdl:message name="MslException">
    <wsdl:part element="tns:MslException" name="MslException" />

  </wsdl:message>
  <wsdl:message name="getMatchingUsersResponse">
    <wsdl:part element="tns:getMatchingUsersResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="getCurrentUserRequest">
    <wsdl:part element="tns:getCurrentUser" name="parameters" />
  </wsdl:message>
  <wsdl:message name="isTokenValidRequest">
    <wsdl:part element="tns:isTokenValid" name="parameters" />

  </wsdl:message>
  <wsdl:message name="logInResponse">
    <wsdl:part element="tns:logInResponse" name="parameters" />
  </wsdl:message>
  <wsdl:message name="logInRequest">
    <wsdl:part element="tns:logIn" name="parameters" />
  </wsdl:message>
  <wsdl:message name="getMatchingUsersRequest">
    <wsdl:part element="tns:getMatchingUsers" name="parameters" />

  </wsdl:message>
  <wsdl:message name="getCurrentUserResponse">
    <wsdl:part element="tns:getCurrentUserResponse" name="parameters" />
  </wsdl:message>
  <wsdl:portType name="MslTestServicePortType">
    <wsdl:operation name="logIn">
      <wsdl:input message="tns:logInRequest" name="logInRequest" />
      <wsdl:output message="tns:logInResponse" name="logInResponse" />
      <wsdl:fault message="tns:MslException" name="MslException" />

    </wsdl:operation>
    <wsdl:operation name="invokeMethod">
<wsdl:input message="tns:invokeMethodRequest" name="invokeMethodRequest" /> <wsdl:output message="tns:invokeMethodResponse" name="invokeMethodResponse" />
      <wsdl:fault message="tns:MslException" name="MslException" />
    </wsdl:operation>
    <wsdl:operation name="isTokenValid">
<wsdl:input message="tns:isTokenValidRequest" name="isTokenValidRequest" /> <wsdl:output message="tns:isTokenValidResponse" name="isTokenValidResponse" />

    </wsdl:operation>
    <wsdl:operation name="logOut">
      <wsdl:input message="tns:logOutRequest" name="logOutRequest" />
      <wsdl:output message="tns:logOutResponse" name="logOutResponse" />
      <wsdl:fault message="tns:MslException" name="MslException" />
    </wsdl:operation>
    <wsdl:operation name="getCurrentUser">
<wsdl:input message="tns:getCurrentUserRequest" name="getCurrentUserRequest" /> <wsdl:output message="tns:getCurrentUserResponse" name="getCurrentUserResponse" />

    </wsdl:operation>
    <wsdl:operation name="getMatchingUsers">
<wsdl:input message="tns:getMatchingUsersRequest" name="getMatchingUsersRequest" /> <wsdl:output message="tns:getMatchingUsersResponse" name="getMatchingUsersResponse" />
    </wsdl:operation>
    <wsdl:operation name="confirmServerIsUp">
<wsdl:input message="tns:confirmServerIsUpRequest" name="confirmServerIsUpRequest" /> <wsdl:output message="tns:confirmServerIsUpResponse" name="confirmServerIsUpResponse" />
    </wsdl:operation>

  </wsdl:portType>
<wsdl:binding name="MslTestServiceHttpBinding" type="tns:MslTestServicePortType"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"; />
    <wsdl:operation name="logIn">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="logInRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="logInResponse">

        <wsdlsoap:body use="literal" />
      </wsdl:output>
      <wsdl:fault name="MslException">
        <wsdlsoap:fault name="MslException" use="literal" />
      </wsdl:fault>
    </wsdl:operation>
    <wsdl:operation name="invokeMethod">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="invokeMethodRequest">

        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="invokeMethodResponse">
        <wsdlsoap:body use="literal" />
      </wsdl:output>
      <wsdl:fault name="MslException">
        <wsdlsoap:fault name="MslException" use="literal" />
      </wsdl:fault>
    </wsdl:operation>

    <wsdl:operation name="isTokenValid">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="isTokenValidRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="isTokenValidResponse">
        <wsdlsoap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="logOut">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="logOutRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="logOutResponse">
        <wsdlsoap:body use="literal" />
      </wsdl:output>
      <wsdl:fault name="MslException">

        <wsdlsoap:fault name="MslException" use="literal" />
      </wsdl:fault>
    </wsdl:operation>
    <wsdl:operation name="getCurrentUser">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="getCurrentUserRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="getCurrentUserResponse">

        <wsdlsoap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMatchingUsers">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="getMatchingUsersRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="getMatchingUsersResponse">

        <wsdlsoap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="confirmServerIsUp">
      <wsdlsoap:operation soapAction="" />
      <wsdl:input name="confirmServerIsUpRequest">
        <wsdlsoap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="confirmServerIsUpResponse">

        <wsdlsoap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MslTestService">
<wsdl:port binding="tns:MslTestServiceHttpBinding" name="MslTestServiceHttpPort"> <wsdlsoap:address location="http://localhost:8080/MslTestService/MslTestService"; />
    </wsdl:port>
  </wsdl:service>

</wsdl:definitions>



If anybody has any idea what's going, I'd be most grateful for help!

Thanks!!


Alex.


--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com
http://netzooid.com/blog

Reply via email to