Bonjour,

Cela fait plusieurs jour que je cherche, j'ai un gros problème dans la réception de ma réponse avec CXF. Dans mes classes de communication générées, j'obtiens un pointeur null.
J'utilise apache-cxf-2.1.2. A partir d'un fichier wsdl, en https, j'ai généré toute une série de classes avec wsdl2java. Mon application doit questionner un serveur LDAP avec un webservice distant (https). La communication fonctionne bien: ma requête est bien envoyée et le web service me répond correctement. Où cela coince, c'est dans les classes auto-générées avec wsdl2java, lors de la réception de ma réponse. J'ai un premier pointeur vers ma réponse, mais à l'intérieur, j'ai un pointeur null alors que ma réponse est complète et correcte.

Pour plus de précisions, voici ma requête sous forme xml:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ldaplogonwsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:connect>
         <user>
            <!--You may enter the following 2 items in any order-->
            <login>user</login>
            <pwd>pwd</pwd>
         </user>
      </urn:connect>
   </soapenv:Body>
</soapenv:Envelope>

Voici la réponse xml que j'obtiens:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <connectResponse xmlns="urn:ldaplogonwsdl">
         <return>
            <answer>SUCCESS</answer>
            <userid>11111</userid>
            <login>user</login>
            <nom>name</nom>
            <prenom>surname</prenom>
            <email>name@domain.fr</email>
            <fonction>
               <code_entite>111</code_entite>
               <titre>test</titre>
            </fonction>
         </return>
      </connectResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Le code auto-généré par wsdl2java me donne ceci pour la réponse:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "connectResponseType", propOrder = {
		"_return"
})
 
public class ConnectResponseType {
 
    @XmlElement(name = "return", required = true)
    protected ConnectedUser _return;
 
    public ConnectedUser getReturn() {
        return _return;
    }
 
    public void setReturn(ConnectedUser value) {
        this._return = value;
    }
}

C'est le pointeur "_return" qui reste désespérément null.

Voici mon code appelant:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
URL wsdlURL = new URL("https://adress/ldaplogon?wsdl"); 
QName SERVICE_NAME = new QName("urn:ldaplogonwsdl", "ldaplogonwsdl");
Ldaplogonwsdl ss = new Ldaplogonwsdl(wsdlURL, SERVICE_NAME);
LdaplogonwsdlPortType port = ss.getLdaplogonwsdlPort();  
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();   
TLSClientParameters tlsParams = new TLSClientParameters(); 
tlsParams.setSecureSocketProtocol("SSL");
httpConduit.setTlsClientParameters(tlsParams);
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(32000);
httpConduit.setClient(httpClientPolicy);
ConnectRequestType _connect_parameters = new ConnectRequestType();
User myUser = new User();
myUser.setLogin(username);
myUser.setPwd(password);
_connect_parameters.setUser(myUser);
ConnectResponseType _connect__return = port.connect(_connect_parameters);
System.out.println("_connect__return=" + _connect__return);
ConnectedUser connectedUser = (ConnectedUser) _connect__return.getReturn();

Ici, connectedUser est null, ce qui est gênant pour récupérer les infos dont j'ai besoin.
Pouvez-vous m'aider svp?

Merci d'avance,
Vincent