Pergunta

Estou tentando configurar um servidor com Cayenne (persistência de objeto remoto). No meu caso, tenho vários bancos de dados usando o mesmo mapa. Qual é a melhor maneira de implementar que, como dois nós não podem apontar para o mesmo mapa?

Eu encontrei duas maneiras de fazer isso, mas isso não é realmente satisfatório:

  • Para ter um domínio para cada banco de dados e para um servlet para cada banco de dados.Funciona, mas significa que vou ter que alterar o web.xml e para recarregar o aplicativo da web se eu criar um novo banco de dados.

  • Para ter um domínio contendo vários nós e vários mapas, todos apontando para o mesmo arquivo.Eu tive que sobrecarregar o EntityResolver para que ele construísse o cache apenas no primeiro mapa e sobrecarregue seleção para que ele aponte para o mapa certo.Não tenho certeza que é uma boa maneira de fazer isso ...

Obrigado por suas respostas e comentários.

Foi útil?

Solução

Assumindo Cayenne 3.1 ou mais recente, eu criaria um objeto ServerRuntime separado para cada DB.DataSources para cada um deles pode ser criado dinamicamente Quando você configura um novo tempo de execução.

Para ligar para o ROP Você pode precisar criar seu próprio servlet que tenha um mapa de vários hessianservlets, um por dB e despache solicitações para instâncias apropriadas com base em algum parâmetro de solicitação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top