Bonjour,

pour exposer simplement mon problème, j’ai créé sous AXIS 1.3 deux web services identiques à un détail près.
L’un est accessible par un client JAX-RPC, l’autre provoque une exception dans ce même client.

Les services exemples ne comportent qu’une seule opération (getTeam) qui renvoie un objet Team.
L’objet Team contient un attribut nom sous forme d’un String et un tableau de String contenant le nom des joueurs de l’équipe.
L’unique différence entre les deux services est que dans un cas la classe Team se trouve dans le même package que l’opération alors que dans le second cas, la classe Team se trouve dans un package à part.

L’accès au deuxième service par un client JAX-RPC, provoque l’exception*:
Erreur : Impossible de désérialiser l'élément name du bean test.ws.service.axis.bean.Team.
L'élément enfant name n'appartient pas à l'espace de nom http://axis.service.ws.test.


Les wsdl et les server-config.wsdd sont bien différenciés, le namespace http://bean.axis.service.ws.test y figure bien.
En revanche la réponse SOAP est strictement identique pour les deux services*:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getTeamResponse xmlns="http://axis.service.ws.test">
<getTeamReturn>
<name>LA Lakers</name>
<players>
<players>Kobe BRYANT</players>
<players>Pau GASOL</players>
<players>Andrew BYNUM</players>
<players>Ron ARTEST</players>
<players>Lamar ODOM</players>
<players>Shannon BROWN</players>
</players>
</getTeamReturn>
</getTeamResponse>
</soapenv:Body>
</soapenv:Envelope>

Des tests avec soapUI montre que le client JAX-RPC attend une réponse de la forme*:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:axis="http://axis.service.ws.test" xmlns:bean="http://bean.axis.service.ws.test">
<soapenv:Header/>
<soapenv:Body>
<axis:getTeamResponse>
<axis:getTeamReturn>
<bean:name>SA Spurs</bean:name>
<bean:players>
<bean:players>Tony Parker</bean:players>
<bean:players>Tim Duncan</bean:players>
</bean:players>
</axis:getTeamReturn>
</axis:getTeamResponse>
</soapenv:Body>
</soapenv:Envelope>

En revanche un client AXIS n’a aucun problème quel que soit le service et quelle que soit la réponse.

Un test sous Axis 1.4 provoque exactement les mêmes réponses qu’Axis 1.3

La question est : pourquoi JAX-RPC ne peut pas accéder à mon service Axis ?
Lequel des deux a raison ?