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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top