Cayenne con più nodi
-
21-12-2019 - |
Domanda
Sto cercando di configurare un server con Cayenne (persistenza dell'oggetto remoto). Nel mio caso ho diversi database utilizzando la stessa mappa. Qual è il modo migliore per implementarlo come due nodi non possono puntare alla stessa mappa?
Ho trovato due modi per farlo, ma non sono realmente soddisfacenti:
- .
-
per avere un dominio per ciascun database e quindi un servlet per ogni database.Funziona ma significa che dovrò cambiare web.xml e ricaricare l'applicazione Web se creo un nuovo database.
-
per avere un dominio contenente diversi nodi e diverse mappe che puntano allo stesso file.Ho dovuto sovraccaricare EntityResolver in modo che costruisca la cache solo sulla prima mappa e per sovraccaricare SelectQuery in modo da puntare alla mappa destra.Non sono sicuro che sia un buon modo per farlo ...
Grazie per le tue risposte e commenti.
Soluzione
Assumendo Cayenne 3.1 o più recente, creerei un oggetto serverRuntime separato per ciascun DB.Datasources per ognuno di loro può essere creato dinamicamente quando si imposta un nuovo runtime.
Per collegarlo a ROP potrebbe essere necessario creare il tuo servlet con una mappa di più HessianServlet, uno per DB e invia richieste di istanze appropriate in base a alcuni parametri di richiesta.