Je déploie un StatelessSessionBean annoté avec @WebService dans JBoss. Je prends le WSDL généré par JBoss pour générer des stubs de client. Mon problème est en appelant une méthode qui retourne une liste d'objets. Si la liste est vide, l'appel réussit si la liste n'est pas vide, je suis l'exception suivante:InstantiationException dans le service Web d'appel du client de service Web déployé sur JBoss
com.sun.xml.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException
- with linked exception:
[javax.xml.bind.UnmarshalException: Unable to create an instance of com.companyname.api.ws.DataItemType
- with linked exception:
[java.lang.InstantiationException]]
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:124)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy34.getWorkflows(Unknown Source)
at com.companyname.api.SimpleClient.go(SimpleClient.java:48)
la recherche sur le web m'a conduit à cette discussion ici: http://forums.java.net/jive/message.jspa?messageID=281780
Cependant, j'ai mis le @ XmlSeeAlso trucs correctement et il est présent sur les classes de stub générées. Je peux confirmer que la classe DataItemType est abstraite, donc il n'est pas surprenant qu'une tentative d'instanciation provoque un problème. Je ne suis pas du tout clair sur pourquoi la classe DataItemType est instanciée du tout (comme c'est abstrait). Ceci est le code XML qui est renvoyé par le serveur (il semble à peu près juste pour moi):
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header></env:Header>
<env:Body>
<ns2:getWorkflowsResponse xmlns:ns2="http://ws.api.companyname.com/">
<return>
<id>
<identifier>1</identifier>
<version>0</version>
</id>
<goal>ENROLL</goal>
<dataItemType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="DataItemTypeText">
<attributeName>email</attributeName>
<displayName>Email Address</displayName>
</dataItemType>
...
</return>
</ns2:getWorkflowsResponse>
</env:Body>
</env:Envelope>
Est-ce que quelqu'un sait ce que je fais mal?
J'ai le même problème et je ne sais pas comment le réparer. – Krishna
Krishna pouvez-vous me donner plus de détails? Je ne sais pas si cela est spécifiquement lié, mais essayer différentes versions de JAX-WS pourrait en valoir la peine. Etre aussi très prudent avec les annotations (et être conscient que les différentes versions les manipuleront différemment) pourrait aider. – macbutch
Ya j'utilise JAX-WS seulement et je fais une classe de Pojo et en mettant cette classe en tant que type de retour dans une autre classe. et quand j'essaye de faire le webservice de cette classe qui montre cette erreur. c'est comme quand je donne le type de retour de cette classe, puis son erreur indiquant comme "Type de retour non pris en charge qui peut provoquer une erreur ou entraîner la perte de données." c'est quelque chose comme cette erreur que je reçois. – Krishna