Tenho um sistema desktop/swing, com seu JAR + bibliotecas.
Gostaria de fazer um sistema pra atualizá-lo.
Obs: Não funciona via JWS, portanto, não é possível usar esta opção.
No atualizador, eu preciso checar se tem “algum usuário” acessando
o arquivo, pois não conseguirei sobrescrever os JARs nesta situação.
Hoje, manualmente eu vejo no servidor Windows - Meu Computador
Gerenciar - Arquivos Abertos. Agora, como eu faria isso automaticamente?
E também visando uma solução que funcione Windows/Linux…
Para cada versão do seu software, crie um ou mais JARs com nomes diferentes. Digamos:
aplicacao-telas-1.0.3.9.jar
aplicacao-transacoes-1.0.4.7.jar
Dessa forma, você vai ter as seguintes vantagens:
Tem certeza que o jar certo está sendo usado
Você não precisa se preocupar se o jar está sendo usado ou não, já que teremos de criar um arquivo novo com nome diferente.
Sua aplicação carrega as classes dos JARs adequados, usando um classloader personalizado, ou então usando uma linha de comando diferente para cada versão.
Após atualizar os JARs, a sua aplicação tem de sair completamente e iniciar completamente. Isso talvez seja possível fazer com uma batch.
Por exemplo, para a versão 1.2 do seu software que usa os jars aplicacao-telas-1.0.3.9.jar e aplicacao-transacoes-1.0.4.7.jar, a nova linha de comando seria