Question

J'essaie de configurer un serveur avec Cayenne (persistance de l'objet distant). Dans mon cas, j'ai plusieurs bases de données utilisant la même carte. Quelle est la meilleure façon de mettre en œuvre que deux nœuds ne peuvent pas pointer vers la même carte?

J'ai trouvé deux façons de le faire, mais qui ne sont pas vraiment satisfaisants:

  • Pour avoir un domaine pour chaque base de données et un servlet pour chaque base de données.Cela fonctionne mais cela signifie que je devrai changer le web.xml et recharger l'application Web si je crée une nouvelle base de données.

  • Pour avoir un domaine contenant plusieurs nœuds et plusieurs cartes pointant sur le même fichier.J'ai dû surcharger EntityResolver afin de construire le cache uniquement sur la première carte et de surcharger SelectQuery de manière à ce qu'elle indique la bonne carte.Pas sûr que ce soit un bon moyen de faire cela ...

Merci pour vos réponses et vos commentaires.

Était-ce utile?

La solution

En supposant que Cayenne 3.1 ou plus récent, je créerais un objet ServerRuntime séparé pour chaque DB.Datasources pour chacun d'entre eux peut être créé de manière dynamique lorsque vous configurez un nouveau runtime.

Pour filer pour ROP, vous devrez peut-être créer votre propre servlet qui possède une carte de plusieurs Hessianservlets, une par dB et envoie des demandes aux instances appropriées en fonction du paramètre de requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top