All,
I want to use CXF 2.1 in combination with Spring 2.5.4 to create an
application that communicat with the Intrexx Portal Server.
My application will provide Webservices which are used by an application
within the portal ans also I want to call webservices which the portal
provides.
Offering my webservice to the portal was no problem and I just used the
SimpleServer example.
But I have a problem when calling the webservice which the portal offers. I
have to call three methods on that service:
1) login(user, pass) which returns a sessionId
2) sendFile(filename, mimetype, filedata) which returns me an id under which
the file was saved
3) logout
The second method needs the sessionID from the first method as a SoapHeader
parameter. But I am not able to set the parameter.
I can see in the dynamically generated classes that a POJO for the
SessionHeader data was created but I don't know how to set it.
Here is the code I use:
=========== Snippet ===============
DynamicClientFactory dcf =
DynamicClientFactory.newInstance();
Client client =
dcf.createClient("http://xlf-virtuell:8040/intrexx/services/Logoverwaltung?w
sdl");
client.getOutInterceptors().add(new
org.apache.cxf.interceptor.LoggingOutInterceptor());
client.getInInterceptors().add(new
org.apache.cxf.interceptor.LoggingInInterceptor());
Object[] res = client.invoke("login", new
Object[]{"Administrator", "","password"});
String sessionID = (String) res[0];
File f = new File("d:/temp/test.jpg");
byte[] data = FileUtils.readFileToByteArray(f);
Object[] res2 = client.invoke("insertFile", new
Object[]{"test.jpg","image/jpeg",data });
Object[] res3 = client.invoke("logout", new
Object[]{sessionID});
=========== End Snippet ============
This is the WSDL of the webservice I want to use:
========== WSDL ===========
<wsdl:definitions name="Logoverwaltung"
targetNamespace="http://services.example.org/">
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://services.example.org/">
<xsd:element name="sessionHeader" type="tns:sessionHeaderType"/>
<xsd:complexType name="sessionHeaderType">
<xsd:sequence>
<xsd:element minOccurs="0" name="sessionId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="login">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="user" type="xsd:string"/>
<xsd:element minOccurs="0" name="domain" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="loginResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
<xsd:element name="sessionTimeout" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getLoginChallenge">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="user" type="xsd:string"/>
<xsd:element minOccurs="0" name="domain" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getLoginChallengeResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
<xsd:element name="challenge" type="xsd:string"/>
<xsd:element name="salt" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendLoginResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
<xsd:element name="user" type="xsd:string"/>
<xsd:element minOccurs="0" name="domain" type="xsd:string"/>
<xsd:element name="response" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendLoginResponseResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
<xsd:element name="sessionTimeout" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="intrexxLogin">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="user" type="xsd:string"/>
<xsd:element minOccurs="0" name="domain" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="intrexxLoginResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
<xsd:element name="sessionTimeout" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="logout">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="sessionId" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="logoutResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="success" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="insertFile">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="File_name" type="xsd:string"/>
<xsd:element name="File_contenttype" type="xsd:string"/>
<xsd:element name="File_content" type="xsd:base64Binary"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="insertFileResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="insertStatus">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xsd:int"/>
<xsd:element name="JobID" type="xsd:int"/>
<xsd:element name="JobStatus" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="insertStatusResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ID" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="loginSoapOut">
<wsdl:part name="parameters" element="tns:loginResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getLoginChallengeSoapIn">
<wsdl:part name="parameters" element="tns:getLoginChallenge">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getLoginChallengeSoapOut">
<wsdl:part name="parameters" element="tns:getLoginChallengeResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="logoutSoapOut">
<wsdl:part name="parameters" element="tns:logoutResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="intrexxLoginSoapOut">
<wsdl:part name="parameters" element="tns:intrexxLoginResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="insertFileSoapOut">
<wsdl:part name="parameters" element="tns:insertFileResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="insertStatusSoapIn">
<wsdl:part name="parameters" element="tns:insertStatus">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sessionHeaderMsg">
<wsdl:part name="sessionHeaderPart" element="tns:sessionHeader">
</wsdl:part>
</wsdl:message>
<wsdl:message name="logoutSoapIn">
<wsdl:part name="parameters" element="tns:logout">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendLoginResponseSoapIn">
<wsdl:part name="parameters" element="tns:sendLoginResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendLoginResponseSoapOut">
<wsdl:part name="parameters" element="tns:sendLoginResponseResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="intrexxLoginSoapIn">
<wsdl:part name="parameters" element="tns:intrexxLogin">
</wsdl:part>
</wsdl:message>
<wsdl:message name="loginSoapIn">
<wsdl:part name="parameters" element="tns:login">
</wsdl:part>
</wsdl:message>
<wsdl:message name="insertStatusSoapOut">
<wsdl:part name="parameters" element="tns:insertStatusResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="insertFileSoapIn">
<wsdl:part name="parameters" element="tns:insertFile">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="Logoverwaltung">
<wsdl:operation name="login">
<wsdl:input message="tns:loginSoapIn">
</wsdl:input>
<wsdl:output message="tns:loginSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getLoginChallenge">
<wsdl:input message="tns:getLoginChallengeSoapIn">
</wsdl:input>
<wsdl:output message="tns:getLoginChallengeSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendLoginResponse">
<wsdl:input message="tns:sendLoginResponseSoapIn">
</wsdl:input>
<wsdl:output message="tns:sendLoginResponseSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="intrexxLogin">
<wsdl:input message="tns:intrexxLoginSoapIn">
</wsdl:input>
<wsdl:output message="tns:intrexxLoginSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="logout">
<wsdl:input message="tns:logoutSoapIn">
</wsdl:input>
<wsdl:output message="tns:logoutSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="insertFile">
<wsdl:input message="tns:insertFileSoapIn">
</wsdl:input>
<wsdl:output message="tns:insertFileSoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="insertStatus">
<wsdl:input message="tns:insertStatusSoapIn">
</wsdl:input>
<wsdl:output message="tns:insertStatusSoapOut">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="LogoverwaltungPortBinding"
type="tns:Logoverwaltung">
<w11soap11:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="login">
<w11soap11:operation
soapAction="http://schemas.unitedplanet.de/intrexx/2007/ws-provider/login/so
ap-action/"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getLoginChallenge">
<w11soap11:operation
soapAction="http://schemas.unitedplanet.de/intrexx/2007/ws-provider/login-ch
allenge/soap-action/"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendLoginResponse">
<w11soap11:operation
soapAction="http://schemas.unitedplanet.de/intrexx/2007/ws-provider/login-re
sponse/soap-action/"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="intrexxLogin">
<w11soap11:operation
soapAction="http://schemas.unitedplanet.de/intrexx/2007/ws-provider/intrexx-
login/soap-action/"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="logout">
<w11soap11:operation
soapAction="http://schemas.unitedplanet.de/intrexx/2007/ws-provider/logout/s
oap-action/"/>
<wsdl:input>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="insertFile">
<w11soap11:operation soapAction="http://services.example.org/insertFile"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="insertStatus">
<w11soap11:operation soapAction="http://services.example.org/insertStatus"/>
<wsdl:input>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:input>
<wsdl:output>
<w11soap11:header message="tns:sessionHeaderMsg" part="sessionHeaderPart"
use="literal">
</w11soap11:header>
<w11soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Logoverwaltung">
<wsdl:port name="LogoverwaltungPort"
binding="tns:LogoverwaltungPortBinding">
<w11soap11:address
location="http://xlf-virtuell:8040/intrexx/services/Logoverwaltung"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
========== End WSDL =======
Any help is appreciated,
--Marcus