# Java > Gnral Java > Persistance des donnes >  [JAXB] Problme pour unmarshaller avec une interface

## kase74

Bonjour,

J'ai un xml schma XSD qui me permet de gnrer mes classes java avec XJC. Pour a pas de souci.
J'ai cr une classe qui hrite d'une classe cre par XJC dans laquelle j'ai rajout des primitives et des mthodes pour le fonctionnement de mon algo. Pas de souci, tout fonctionne bien.
Mais j'ai un souci ds que j'ajoute dans ma classe fille une primitive de type Iterator.
J'ai le message d'erreur "JAXB can't handle interfaces"  l'ccution.
J'ai recherch une solution et j'ai trouv beaucoup de sites qui parlent de ce pb mais j'avoue que mon anglais est limit et les choses ne sont pas claires pour moi.

Voici un extrait de mon code pour clarifier ceci (je mets le stricte ncessaire):
Voici la classe gnre par XJC depuis mon XSD :


```

```

J'ai donc une collection List. Cette classe est gnre et je ne veux pas y toucher.

Voici la classe que j'ai crite moi et qui hrite de la premire :


```

```

Pour mon algo, j'ai besoin de garder un itrateur sur ma liste pour optimiser le parcours.
Tout fonctionne trs bien sans cet itrateur. Mais ds que je le mets j'ai l'erreur Can't handle Interface  l'xcution.

J'ai cherch le moyen de spcifier dans la classe fille de ne pas prendre en compte la primitive Iterator. Mais j'ai pas trouv.

Peut tre aussi qu'il y aurait une autre solution pour conserver l'info position dans ma liste, mais je ne vois pas.

Je prcise que je suis dans une phase d'optimisation. J'ai profiler mon appli et 90% du temps proc est pass dans le parcours de cette liste. Pour un teste simple, le calcul prend plus de 6H30. Donc l'optimisation est norme.

Voici en bref l'objet de mon appli pour mieux comprendre :
Mon appli fait de la simultation en mcanique des fluides.
Les donnes d'entres permettant de faire une simulation sont crites par l'utilisateur au format XML en respectant le XSD voqu.
Le problme se pose  l'ccution lors du unmarshaller du fichier source des donnes d'entres.
Mon algo fait plusieurs milliers d'itrations afin d'arriver  une solution.
Dans cet algo j'ai besoin d'aller chercher une info dans la liste. A chaque itration je parcours donc ma liste depuis le dbut. Hors cette liste est ordonne et  chaque incrment je veux avoir l'info se trouvant aprs.
Donc je cherche absolument le moyen d'viter ce parcours en stockant la position dans la liste pour accder immdiatement  l'lment suivant.

Tous les sites que j'ai pu trouver ne rpondent pas exactement  mon pb puisqu'ils voquent tous l'opration inverse : le marshalling pour gnr un XML depuis le code JAVA.

Est ce que quelqu'un pourait m'aider ou m'aiguiller pour trouver une solution SVP.
Merci d'avance.
Cdlt.

----------


## olivier.pitton

Si tu veux te passer de l'itrateur, tu dois le rendre non persistant.

Pour cela ajoute simplement le mot-cl transient  ta variable. Ce mot-cl



```

```

----------


## kase74

Ca marche !!!

Je n'en reviens pas. Je n'y tais pas du tout sur ce coup l. Je cherchais une solution par rapport au mapping XML et non pas  la srialisation puisque l'erreur se produisait sur un unmarshaller.

Mille mercis Olivier.

J'abuserais en demandant comment tu as trouv a et surtout m'expliqer o est le lien entre la srialisation et le mapping xml.


Encore merci en tout cas.

----------


## olivier.pitton

Plop,

JAXB utilise la srialisation pour les classes. Or le mot-cl standard de Java *transient* permet de ne pas srialiser les champs marqus. Ces-derniers sont simplement ignors durant le processus, et mis  null lors de la dsrialisation.

Beaucoup d'outils se basant sur la srialisation utilisent ce genre de "mcanismes", par exemple JPA utilise l'annotation @Transient.

Un cours sur la srialisation dans le cours Java jmdoudou chap srialisation.

----------


## kase74

OK. Merci pour ces explications. Je  connais bien la srialisation et le mot cl Transcient. Mais je connais beaucoup moins bien JAXB et je n'avais pas pens  a du tout.
Encore merci.  ::ccool::

----------

