2009-10-16 4 views
0

J'ai récemment écrit quelques méthodes d'accès aux données (Java ancien) qui utilisent des objets immuables pour les objets de requête et les objets de données résultants. J'aime les objets immuables car ils empêchent une grande confusion d'apparaître dans le code client que j'ai vu dans le passé quand les gens essayaient de muter et de réutiliser des objets.Quel est le problème avec la génération de services Web et JavaBeans?

Quoi qu'il en soit, c'était il y a des mois. Maintenant, un collègue a des problèmes avec certains trucs de génération de service web (essayant d'exposer mes méthodes) qui s'attend à ce que tout soit partout JavaBean.

Ma question est la suivante: est-ce que la génération de trucs de services web exige toujours l'utilisation de JavaBeans? Y a-t-il un autre moyen?

Répondre

1

La plupart des frameworks de service Web vous permettent de fournir des sérialiseurs/désérialiseurs personnalisés pour les types. On dirait que c'est ce dont vous avez besoin ici.

Si ce n'est pas clair pourquoi c'est nécessaire, c'est parce que le framework a besoin de savoir comment traduire votre classe Java en XML et vice versa. La sérialisation et la désérialisation des JavaBeans (classes avec les propriétés get et set) est facile si vous suivez la stratégie de dénomination, mais vous devriez également pouvoir fournir vos sérialiseurs de type personnalisés pour les classes qui ne suivent pas le modèle de bean.

1

Il existe deux approches générales pour le développement de services Web: de haut en bas et de bas en haut. Dans l'approche descendante, un service Web est basé sur l'interface de service Web et les types XML, définis dans les fichiers WSDL et XML Schema Definition (XSD). Le développeur conçoit d'abord l'implémentation du service Web en créant un fichier WSDL. À partir de ce squelette, il est possible de créer des classes Java auxquelles le développeur peut ajouter le code requis. Cette implémentation squelette sert d'interface avec la logique métier. Ce processus fait également partie de l'API J2EE standard JAX-RPC pour les services Web qui définit les mappages standard entre les classes Java et les types XML. Dans l'approche ascendante, un service Web est créé sur la base de la logique métier existante dans les beans Java ou les EJB. Un fichier WSDL est généré pour décrire l'interface de service Web résultante. On dirait que votre collègue utilise cette approche.

Je recommanderais une approche descendante plutôt qu'une approche inférieure, car vous auriez plus de contrôle sur les définitions d'interface et la dénomination. Votre collègue pourrait également utiliser vos classes existantes via l'interface squelette générée par l'outil.

Questions connexes