Atualizar Sistema - Automáticamente

13 respostas
C

Bom dia.

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.

Se alguem puder me ajudar ficarei grato.

13 Respostas

C

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

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

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

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

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

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

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

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

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

É 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

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

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.

Tem esse site que explica praticamente tudo sobre o JWS, apesar de não ser o site oficial.
http://lopica.sourceforge.net/faq.html#magic-props

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.

Boa sorte e bons estudos

C

Isso mesmo…

Criado 16 de novembro de 2012
Ultima resposta 16 de nov. de 2012
Respostas 13
Participantes 7