Trabalho com um sistema que sempre é necessário ser atualizado, mas o processo de atualização é demorado devido ao tamanho do sistema além de ser 200+ clientes.
O sistema é bem simples e pequeno(13BM máximo). Quando atualizamos mudamos poucas coisas, mas temos que enviar tudo novamente.
Pesquisei e não encontrei nada sobre o assunto, nada que me desse um norte.
OBS: Eu n gostaria de enviar todo o .jar, mas sim apenas as classes que foram alteradas ou pelo menos as classes sem as lib. Isso já seria muito útil. Dai na máquina no cliente o sistema iria subscrever as classes existentes pelas novas dentro do .jar.
Da maneira que você comentou sobre envio de apenas algumas classes eu não conheço, mas acredito que uma solução viável para o seu caso seria o Java Web Start, que resolveria parte do seu problema.
G
gilluan
A sugestão do cleciusjm é uma boa opção, mais tenho uma dica,
na empresa que trabalho, temos uma aplicação em Delphi, a atualização do executável é feita da seguinte forma.
Temos um servidor de ftp onde colocamos a versão mais recente do sistema ,antes do sistema abrir ele verifica a data do executável
do ftp, se a data do arquivo do ftp for a mais recente ele baixa o .exe e substitui.
H
Hebert_Coelho
Eu iria sugerir algo como o gilluan disse.
Um sistema que se “auto-atualiza”. Nunca vi nada do tipo “vou enviar apenas as classes alteradas”, mas já vi algo do tipo o sistema abre e se atualiza. [=
C
cleciusjm
Mas no caso o Java Web Start auxilia esse processo automatizando isto, não vejo motivos para implementar um mecanismo destes na mão.
C
Cledsonjr
Pois é, nem sei se é possível fazer dessa maneira.
Havia pensado em algo como o Assembla(SVN) que usamos aqui para controlar o projeto, que identifica qual classe foi alterada e apenas ela é atualizada.
O que gostaria era de levar essa possibilidade para a produção. Onde não mais seria necessário enviar todo o sistema, mas sim apenas as partes que foram alteradas.
Os nossos clientes em geral possuem internet muito lenta e vcs não imaginam a demora que é enviar 13mb para eles e desses 13mb uns 10mb++ são só de lib’s.
Se tivesse a possibilidade de enviar apenas os .class para dentro do .jar do projeto subscrevendo o atual seria muito bom. Enfim, continuarei pesquisando…
H
Hebert_Coelho
cleciusjm:
Mas no caso o Java Web Start auxilia esse processo automatizando isto, não vejo motivos para implementar um mecanismo destes na mão.
Não conheço o JWS mas legal se ele faz isso. [=
E
erico_kl
gilluan:
A sugestão do cleciusjm é uma boa opção, mais tenho uma dica,
na empresa que trabalho, temos uma aplicação em Delphi, a atualização do executável é feita da seguinte forma.
Temos um servidor de ftp onde colocamos a versão mais recente do sistema ,antes do sistema abrir ele verifica a data do executável
do ftp, se a data do arquivo do ftp for a mais recente ele baixa o .exe e substitui.
Isso é exatamente o que o Java Web Start faz, porém ele usa HTTP (com JNLP) ao invés de FTP
C
cleciusjm
Cledsonjr:
Pois é, nem sei se é possível fazer dessa maneira.
Havia pensado em algo como o Assembla(SVN) que usamos aqui para controlar o projeto, que identifica qual classe foi alterada e apenas ela é atualizada.
O que gostaria era de levar essa possibilidade para a produção. Onde não mais seria necessário enviar todo o sistema, mas sim apenas as partes que foram alteradas.
Os nossos clientes em geral possuem internet muito lenta e vcs não imaginam a demora que é enviar 13mb para eles e desses 13mb uns 10mb++ são só de lib’s.
Se tivesse a possibilidade de enviar apenas os .class para dentro do .jar do projeto subscrevendo o atual seria muito bom. Enfim, continuarei pesquisando…
Não tenho certeza, mas se eu não me engano o JWS controla o versionamento de libs de uma forma separada, logo, ao alterar o sistema as libs não precisam ser baixadas de novo, só o jar do sistema.
E
erico_kl
Você pode controlar as libs separadas do jar da sua aplicação, e atualizar só o que for necessário…
Dê uma olhada no JNLP do sistema emissor de NF-e da receita…
C
charleston10
É para isso que existe o Java Web Start,
ele funciona para esse mesmo fim, tive o mesmo problema ao criar um sistema de gerenciamento de rede para uma rede municipal de uma cidade
vizinha, tinha mais de 20 escolas, com muitos computadores, e como que eu ia fazer essa atualização?
Recorri ao JWS, ele não baixa todo o sistema, é Lindo de se ver, ele apenas baixa as classes que não tem no sistema, verifica a classe ja existente, se
existir, compara o script, o script q nao tiver, ele inclui ou exclui comparado com o novo.
Muito rápido atualizar.
Dê uma estudada nele, vale a pena…
C
Cledsonjr
Valeu galera.
Vou aproveitar esse feriado para estudar o Java Web Start, pelo o que vcs estão me falando ele é exatamente o que estou precisando.
L
lucasportela
charleston10:
É para isso que existe o Java Web Start,
ele funciona para esse mesmo fim, tive o mesmo problema ao criar um sistema de gerenciamento de rede para uma rede municipal de uma cidade
vizinha, tinha mais de 20 escolas, com muitos computadores, e como que eu ia fazer essa atualização?
Recorri ao JWS, ele não baixa todo o sistema, é Lindo de se ver, ele apenas baixa as classes que não tem no sistema, verifica a classe ja existente, se
existir, compara o script, o script q nao tiver, ele inclui ou exclui comparado com o novo.
Muito rápido atualizar.
Dê uma estudada nele, vale a pena…
charleston10,
Só comentando que na verdade ele compara a versão dos .jars, se for diferente ele atualiza o .jar.
Cledsonjr,
Há uma coisa importante também que vale citar, se seu sistema faz uso de recursos que precisam de privilégios, então você precisa assinar os .jars ou então implementar uma API Web Start do Java para definir em que pontos do sistema terá privilégios.
O sistema que desenvolvi usa este recurso e garanto a você que não preciso me preocupar com a atualização do sistema nos clientes. O sistema está na minha assinatura.