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.