A discussão que eu quero ter nesse tópico é sobre a utilização de Java Web Start para distribuição de um client leve feito em Swing, que acessaria EJB’s remotamente. Cogitou-se o uso de um setup de instalação, mas o cliente não quer que seja adotada essa solução.
Considerando que a aplicação teria um certificado digital válido, o que em tese anula o efeito do modelo de segurança sand box do JWS, permitindo a aplicação acessar recursos de rede, sistema de arquivos e etc…
Queria saber se alguém já viu um modelo parecido em funcionamento, ou se conhecem outros mecanismos para distribuição do aplicativo Swing, sem o uso de JWS ou Setups de instalação.
[quote=Felagund]Usamos o Web Start para distruibuir nossas aplicações, e nunca tivemos problemas, funciona tudo muito bem.
Também usamos EJB como back end[/quote]
Aqui na empresa também usamos o JWS, comm Swing e EJB’s, sem problemas.
[quote=Felagund]Usamos o Web Start para distruibuir nossas aplicações, e nunca tivemos problemas, funciona tudo muito bem.
Também usamos EJB como back end[/quote]
Pessoal,
Só me tirem uma dúvida. Vocês tiveram mesmo que assinar digitalmente o jar para fazer com que o aplicativo pudesse acessar os recursos da máquina?
Eu uso webstart em um ambiente exatamente como o que você propóe sem problemas.
A única coisa que acho muito, mas muito chata mesmo é a geração do arquivo JNLP. Pra me ajudar, uso uma biblioteca de tarefas do Ant chamada OrangeVolt. Ela gera o arquivo digital pra mim sem problemas.
Outro ponto pra ficar esperto é o seguinte: na assinatura dos arquivos .jar você pode ter uma série de problemas. Destes, o mais comum que enfrentei é o seguinte: o arquivo já possuir uma assinatura digital e, em seguida, você incluir a sua. O JWS simplesmente não carrega a aplicação.
A solução que encontrei foi a seguinte: nestes casos, eu antes descompacto todos os arquivos .jar, excluo o arquivo de assinatura digital, gero-os novamente e, então, os assino um a um.
Claro: usando o ant pra isto, eu não seria louco de fazer manualmente.
Eu sempre procuro usar o jar-signer para verificar se o jar ja tem assinatura, normalmente, vc sempre acha algum que não tenha.
Eu uso o maven, então tem uma tarefa customizada la que gera o arquivo JNLP e assina os jars, mas não existe um certificado referente a essa assinatura, é somente o nome da empresa, o cliente diz se aceita ou não. Mas o acesso aos dados funciona normalmente, em alguns casos o proprio Web Start pergunta se o usuario quer permitir o acesso.
Aproveitando o gancho, vou fazer uma pergunta também.
Eu observei que em algumas máquinas mais antigas aqui na empresa, ao usar o Webstart o consumo de recursos vai às alturas. Procede esta observação?
Nestes casos, o que fiz foi criar duas distribuições da mesma aplicação, uma que fica em um diretório na rede (o que evita o problema) e outra com webstart.
[quote=kicolobo]Aproveitando o gancho, vou fazer uma pergunta também.
Eu observei que em algumas máquinas mais antigas aqui na empresa, ao usar o Webstart o consumo de recursos vai às alturas. Procede esta observação?
Nestes casos, o que fiz foi criar duas distribuições da mesma aplicação, uma que fica em um diretório na rede (o que evita o problema) e outra com webstart.[/quote]
Sabe que nunca notei isso…
Já percebi que em maquinas inferiores o consumo é maior, mas sempre atrelei isso aos recursos escassos da maquina…
Isto me deu um problemão aqui. O problema fica mais nítido no momento em que você sobe uma nova versão do aplicativo, e este possui uma quantidade grande de dependências, como por exemplo aplicações que usam Spring ou Hibernate.
Após a atualização, o problema aparecia, por exemplo, no momento em que eu preciso renderizar um table model maior. OutOfMemory sem parar no log da aplicação. No entanto, na segunda vez, o problema não ocorre com tanta frequencia.
Talvez seja até um problema com alguma versão da JVM, mas por via das dúvidas, acabei adotando as duas soluções mesmo, ou seja, uma versão na rede, aonde eu encapsulo o jar principal com o Launch4J e outra com webstart.
[quote=rafa.fgs][quote=Felagund]Usamos o Web Start para distruibuir nossas aplicações, e nunca tivemos problemas, funciona tudo muito bem.
Também usamos EJB como back end[/quote]
Pessoal,
Só me tirem uma dúvida. Vocês tiveram mesmo que assinar digitalmente o jar para fazer com que o aplicativo pudesse acessar os recursos da máquina?
Obrigado![/quote]
Claro, senão a app fica limitada, ou vc tem que implementar todo o acesso aos recursos atraves da API do JWS, assinando a aplicação a programação se passa como uma aplicação desktop “embarcada”.
Mas se vc preferir, e dependendo até do tipo de usuário e aplciação que vc esteja fazendo, por exemplo, se é uma aplicação mais “publica”, geralmente o nivel de desconfiança dos usuários é maior, desta forma eu recomendaria não assinar a aplicação e todo o acesso a recursos ser feito pela API específica, isto pq passa que a aplicação informa melhor os acessos, mas numa aplicação de dentro da empresa mesmo… sei lá, acho uma “durocracia” desnecessária, mas como falei, vai muito dos usuários.
[quote=kicolobo]Isto me deu um problemão aqui. O problema fica mais nítido no momento em que você sobe uma nova versão do aplicativo, e este possui uma quantidade grande de dependências, como por exemplo aplicações que usam Spring ou Hibernate.
Após a atualização, o problema aparecia, por exemplo, no momento em que eu preciso renderizar um table model maior. OutOfMemory sem parar no log da aplicação. No entanto, na segunda vez, o problema não ocorre com tanta frequencia.
Talvez seja até um problema com alguma versão da JVM, mas por via das dúvidas, acabei adotando as duas soluções mesmo, ou seja, uma versão na rede, aonde eu encapsulo o jar principal com o Launch4J e outra com webstart.[/quote]
Humm… é, como foi falado, em maquinas mais “fraquinhas” o JWS, e o Java em sí consome bastante.
Uma coisa que nós aqui percebemos é que com o versionamento dos jars feito de forma bem controlada melhor e muito quando se atualiza a aplicação, pois o JWS não faz o download de todas as dependencias novamente, somente as que foram atualizadas, com isto a apliacação aqui, que tem uns 100MB de client, só atualiza usn 5 a 7 MB por vez, que geralmente são as dependencias atualizadas.
Ps.: o uso do maven, tanto para o controle de versões como para geração do JNLP, ajudou e muito.
eu desenvolvi uma aplicação Desktop ( swing ), ela roda certinho, porém são várias máquinas acessando essa aplicação, e tenho que instalar em cada máquina, bom tava lendo sobre Java Web Star e resolvi implementar nessa aplicação, estou utilizando o NetBeans. Bom vou colocar o passo a passo que fiz aqui.
1 - Cliquei com o botão direito do mouse, fui em Propriedades e achei o Web Start.
2 - Coloquei as seguintes configurações:
Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
3 - Mandei executar o projeto, como sabem o NetBeans cria uma pasta chamada " dist " aonde ficam esses arquivos as libs, .jar e o launch.
4 - Peguei esses arquivos e joguei numa pasta no meu servidor no FTP, no meu site.
5 - Entrei na página do launch e baixei o " launch.jnlp ", instalou tudo beleza o aplicativo, baixou todos os arquivos.
Agora que veio o problema, eu simplesmente mandei abrir o aplicativo ele aparece a tela de LOGIN e ai coloca meu usuário e senha, porém quando clico em entrar, ele está demorando muito para logar, fica tipo uns 5 minutos. Tempo demais, estou utilizando hibernate + postgre, e a aplicação local funciona certinho.
1 - Minha dúvida é porque ele está demorando tanto para abrir, teria que mudar alguma configuração no " launch.jnlp "?
2 - Ele demora assim porque está ferificando os arquivos talvez licenças não sei?