Explicando melhor, é o caso, por exemplo que enfrento no momento. Na aplicação o usuário deve se autenticar na primeira vez que for utilizar o device para iteragir com o servidor, neste momento faço a persistência do usuário, caso a autenticação seja OK, no device, para que nas próximas vezes o usuário não tenha que se autenticar novamente.
Posteriormente quando o usuário vai fazer alguma outra operação do sistema recupero o usuário já autenticado e ativo no device para associar a operação sendo executada com o usuário corretamente.
O problema é que durante o desenvolvimento como o midlet de login e de outras operações são codificados separadamente a base de dados não contém mais o usuário autenticado o que causa um NullPointerException em uma rotina para recuperar o usuário similar a:
// recupera usuario ativo no device. LoginDBME loginDBME = new LoginDBME(true); int idUsuario = loginDBME.getLoginAtivo().getIdUsuario();
Isso tem se mostrado bastante frustrante durante o desenvolvimento e por isso preciso encontrar um meio de fazer com que a base de dados do emulador de device(utilizo o da sun) fique permanentemente armazenada no meu computador.
Pesquisei muito sobre esta questão e infelizmente não consegui achar nada realmente útil na internet. A única solução que encontrei para o problema foi encontrar a base de dados temporária gerada pelo emulador, no meu caso no windows logado como Administrador se encontrava no C:\Documents and Settings\Administrator\j2mewtk\2.5.2\appdb onde é criada uma pasta com nome temp.DefaultColorPhonexx .
Após localizar a base o que fiz pode-se dizer que foi um "gato" ou POG(programação orientada a gambiarras) tendo eu que locar o arquivo para que quando o emulador fosse fechado não tivesse permissão para apagar o mesmo.
Para mim essa não é uma solução aceitável e devido a este e a vários outros problemas com o desenvolvimento utilizando RMS decidi começar a avaliar a utilização de uma base de dados para devices(JME) . Meus requisitos para utilização são portabilidade e que a mesma seja gratuita. Inicialmente estou estudando a Floggy: http://floggy.sourceforge.net/ e provavelmente irei refatorar meu código para utilizá-la. Deixarei aqui posteriormente minhas impressões sobre ela.
FINALMENTE UMA SOLUÇÃO (DATA 31/03/2009)
Hoje finalmente encontrei uma solução bastante simples e já disponível no WTK 2.5.2 que estou utilizando. O que deve ser feito é abriar o WTK e ir em Edit > Preferences > Storage e nesta aba preencher a pasta onde se quer colocar a base de dados do device no campo: Storage root directory . Isto irá fazer com que a configuração seja persistente não mais utilizando as bases temporárias default do WTK.
Nenhum comentário:
Postar um comentário