Mais uma perguntinha: como funciona a concorrência do arquivo do banco? Se eu tenho várias instâncias da web, por exemplo, todas estas instâncias podem acessar este mesmo arquivo aberto?
Em modo local, varios usuários não poderão acessar o mesmo bd.
vc tem duas opções para aplicações WEB:
Configura ODB em modo local para ser usado em multithread usando Configuration.useMultiThread(boolean yes, int numberOfThreads). Neste caso, ODB, ao detectar um lock no arquivo do bd, irá esperar um pouco e tentar de novo, isso várias vezes (o número de vezes depende do número de threads)
Como em geral as operações de persistência são rápidas, alguns ms, essa opção resolve.
Em modo local, varios usuários não poderão acessar o mesmo bd.
vc tem duas opções para aplicações WEB:
Configura ODB em modo local para ser usado em multithread usando Configuration.useMultiThread(boolean yes, int numberOfThreads). Neste caso, ODB, ao detectar um lock no arquivo do bd, irá esperar um pouco e tentar de novo, isso várias vezes (o número de vezes depende do número de threads)
Como em geral as operações de persistência são rápidas, alguns ms, essa opção resolve.
Use em modo Cliente/Servidor
[/quote]
Desculpe, não entendi direito: o número de threads é o número de usuários simultâneos? Como posso deixar em modo Cliente/Servidor e qual é a vantagem de deixar nesse modo?
vc tem que iniciar um Servidor (Pode ser no init de uma das suas servlet por exemplo ou até fora do seu application server).
Nesse exemplo, inicia na porta 10000
public class Server {
public static void main(String[] args) throws Exception {
ODBServer server = ODBFactory.openServer(10000);
server.setAutomaticallyCreateDatabase(true);
server.startServer(true);
}
}
Na realidade, você pode colocar um número pequeno pois estamos falando em conexões que irão abrir o banco de dados no mesmo milisegundo. Com 10 já está ok.
O NeoDatis não tem como saber isso. Mas poderia um valor default, concordo (Mais uma feature request?) .