2009-02-09 10 views
0

Je travaille sur un projet Java existant avec une installation typique de services - dao pour laquelle seule une application Web était disponible. Mon travail consiste à ajouter des services Web au-dessus de la couche des services, mais les services Web ont leur propre analyse fonctionnelle et leur propre modèle de données. Les analyses fonctionnelles de la source se concentrent sur ce qui est possible dans les différentes méthodes de service.WSDL en premier pour la couche de service existante

Pour répondre aux bonnes pratiques, nous avons utilisé la première stratégie WSDL et généré des classes Java liées à JAXB et une SEI pour les services Web. Après avoir partiellement implémenté les services web, nous avons remarqué une correspondance de 70% entre les modèles de données. Cela a entraîné l'écriture de convertisseurs qui prennent les classes JAXB du service Web et les mappent avec les classes de couche de service.

Customer customer = new Customer(); 
customer.setName(wsCustomer.getName()); 
customer.setFirstName(wsCustomer.getFirstName(); 
.. 

Ceci est un exemple très évident, d'autres mappings étaient un peu plus compliqués. Quelqu'un peut-il donner ses meilleures pratiques, expériences, solutions à ce genre de situations?

L'un de ces cadres est-il utile? http://transmorph.sourceforge.net/wiki/index.php/Main_Page http://ezmorph.sourceforge.net/

S'il vous plaît ne pas démarrer une discussion à propos de WSDL premier vs premier code.

Répondre

0

Je pense que la vraie question est ... combien de générateurs de code voulez-vous utiliser à l'avenir, et pouvez-vous les amener à générer ce que vous faites maintenant. La conversion de tout à votre modèle de données actuel est une bonne idée, si vous ne vous souciez pas des capacités de génération de code de vos outils, ou s'ils peuvent s'adapter à ce que vous voulez.

1

Je rencontre le même problème sur mon projet. J'ai créé une fabrique pour les objets générés et je l'utilise pour créer des objets.

Customer customer = factory.createCustomer(wsCustomer); 

qui isole le code de construction, w/o modifier le code généré.

+0

Bon point, nous avons ces usines avec des méthodes de création pour les deux directions –

Questions connexes