Java Web Start

As estapas de criação e implantação de um aplicativo Java Web Start

1 - Crie um arquivo JAR executável para seu aplicativo
2 - Crie um arquivo .jnlp
3 - Insira os arquivos JAR e .jnlp em seu servidor Web
4 - Adicione um novo tipo mime a seu servidor Web
5 - Crie uma página Web com um link que conduza a seu arquivo .jnlp

A estrutura dos meus arquivos são as seguintes:

C:\MyProject\classes

MyApp.jnlp - MyJWSApp.html - MyApp.jar

Quando abro o meu MyJWSApp.html aparece o link “Launch My Aplication”, ai quando clico no link aparece a opção de abrir o arquivo MyApp.jnlp, eu abro com o Java Web Start e aparece o erro “Unable to launch the aplication”

Obs.: Não fiz o 3º e o 4º passo.

[code]

<?xml version="1.0" encoding="utf-8"?> [/code]

1º - Para rodar qualquer aplicação com JWS você deverá criar uma private key e assinar todos os jar que sua aplicação utiliza.

Para assinar o jar faça o seguinte comando pelo DOS.
1.1- Você precisa criar a chave pública que servirá de apoio para criação do projeto associado:
keytool -genkey -dname “cn=Teste, ou=Tecnologia o=B, l=F, s=C” -alias key -keystore c:\temp\mykeystore -storepass 123456 -validity 450
1.2- Após a criação da chave pública assine o jar através do seguinte comando e repetir essa chamada para todos os jars da aplicação, modificando apenas os nomes dos jar’s.
jarsigner -keystore c:\temp\mykeystore -storepass 123456 -signedjar as.jar s.jar key

2 º - Nunca coloque o caminho da sua aplicação do SO corrente, pois se alguém utiliza remotamente provavelmente não conseguirá ter acesso.
3º - Você terá que colocar dentro do Manifest qual é a classe Main e qual é o pacote corretamente que está usando.

4º - Agora no arquivo jnlp você deverá realizar as chamadas corretamente.

<?xml version="1.0" encoding="UTF-8"?> Programa JNLP Sun Programa - Teste JWS
<shortcut online="true">
    <desktop/>
    <menu submenu="Teste JWS"/>
</shortcut>
<offline-allowed/>

Se você quiser automatizar suas rotinas de geração do web start o proprio NetBeans utiliza uma ferramenta para isso ou você poderá constriuir via Ant Task…

Espero ter ajudado nas explicações

:smiley:

olá hebertaquino?

Então você disse que o proprio NetBeans faz isso?

Como faço para fazer isso no NetBeans?

Abraços

Pra começar, comece entendendo como criar a sua chave nesse tutorial

[quote=hebertaquino]
1º - Para rodar qualquer aplicação com JWS você deverá criar uma private key e assinar todos os jar que sua aplicação utiliza.[/quote]

Falso. Isso só é válido se você precisa de privilégios elevados na execução, como leitura/escrita de arquivos acessando diretamente o HD ao invés de utilizar a API do JWS que existe pra isso.

Qual o erro que é mostrado? Só um “Unable to launch the application” não ajuda muito :roll:

Fiz o que foi descrito acima no passo-a-passo e esta me dando o seguinte erro:

Unsigned resource> http://localhost:8080/tutorialjws/GUIVL.jar

JNLPException[category: Security Error : Exception: null : LaunchDesc:


Tutorial Java Web Start
GUJ � Grupo de Usuarios Java

Tutorial Java Web Start
Tutorial JWS












]
at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Só que o GUIVL.jar é o meu jar principal.
Mesmo assim, tentei também assinar ele com o comando de assinatura descrito acima e nada.
A minha keystrore está em um diretório diferente do projeto, e ao gerar o jar principal ela ficou de fora, algum problema nisto ?

estou com esse mesmo problema…o mesmo codigo de erro acima…se alguem poder ajudar, fico grato…

para resolver esse problema eu tive que assinar todos meus .jar, conforme o link

http://horizontesdigitais.com/2008/05/24/assinatura-de-applet/

e segue o que eu fiz…só adapta do jeito que preferir…

keytool -genkey -dname “cn=TopSys, ou=Desenvolvimento, o=Elder, c=BR” -alias key -keystore key -storepass 123456 -validity 356 (quando pedir confirmação, apenas pressione o enter - RETURN)

keytool -export -keystore key -alias key -file [local específico se quiser]keycert.x509

jarsigner.exe -keystore key -storepass 123456 -signedjar T:\Sistemas\TopSys\Classes\gxclasspNovo.jar T:\Sistemas\TopSys\Classes\gxclassp.jar key

agora esta dando uma mensagem de aviso dizendo q nao foi possivel verificar minhas assinaturas…alguem tem ideia de como resolver? será q tem alguma coisa errada acima?

valeu…

[quote=peresjuliao]olá hebertaquino?

Então você disse que o proprio NetBeans faz isso?

Como faço para fazer isso no NetBeans?

Abraços[/quote]

Basta configurar a aplicação como Web Start e mandar executar, assim o netbeans assina todos os jars automaticamente.

alguém sabe se o JWS gera algum arquiv de log pois minha aplicação nao abre, nao acontece nada…não sei onde começar a procurar o problema…

obrigado

voltando a briga com o web start, depois de finalmente conseguir executar minha aplicação, estou com os seguintes problemas:

  • só consigo executa-la clicando duas vezes no meu arquivo .jnlp, atraves de um link html (<a href) ele até executa o web start mas minha aplicação não aparece.

  • dúvida: preciso assinar meu jnlp sempre q for mandar atualização para o cliente? ou seja, já preciso mandar assinado? fiz esse teste e se eu nao assinar um arquivo mais novo da o erro “Unsigned application requesting unrestricted access to system”.

enquanto isso, sigo na luta aqui…
a propósito, tem alguem que já tentou usar o webstart com aplicativos gerados pelo genexus?

Obrigado.

Hei mineirinho,
eu estava com o mesmo problema
olhando no log do Zone Alarm vi que o firewall estava bloqueando o javaws. Daí foi só liberar a execução e pronto, funcionou.
abraço!

Alguém conseguiu resolver?

Tenho um caso parecido.

Ja criei a .jar e a jnlp.

Quando clico no link ele sempre pede para fazer o download do arquivo jnlp.
Beleza, faço o download e executo. Ele até abre minha aplicação mas não executa nenhum comando!!

HELP