Pessoal,
Na realidade não tenho dúvidas de programação, queria mais era trocar uma idéia, receber idéias na verdade.
O ambiente
Eu tenho um software desktop cliente (Swing) e um servidor. O cliente deve ser atualizado de tempos em tempos, para isto tenho que ir no computador onde o cliente está sendo usado e gravar o novo jar.
Meu desejo
Fazer o cliente identificar que existe uma atualização no servidor e se auto-atualizar.
O problema
Não tenho dúvidas de programação, fazer o cliente perguntar pro servidor se tem atualização (via socket) é tranquilo, enviar os bytes do novo jar do cliente para o cliente também é tranquilo. Porém após o cliente receber os bytes eu teria que sobrescrever o próprio jar com os novos bytes recebidos via socket. Não tem como fazer isso pois o programa já está aberto.
O que eu pensei em fazer
Pensei em fazer assim: O cliente recebe o array de bytes do novo jar (que é ele mesmo porém atualizado), eu gravo um novo jar do lado dele que seria o “atualizador” e gravo o novo jar do cliente que substituirá o cliente atual. Após esses dois jars gravados eu executo o atualizador que irá fechar o meu cliente atual, deleta-lo e renomear o novo cliente para o nome do antigo, dai o atualizador executa novamente o cliente.
Cabuloso né? uhAHUaHUaHUa
Não sei se fui claro, enfim, eu consigo programar isso na boa, só não sei se é a melhor tática, por favor me ajudem!
Obrigado.