Java Web Start não roda no cliente

Galera,

Estou com uma aplicação JWS que roda normalmente no meu PC. Estou usando o TOMCAT. Mas quando acesso essa aplicação de outro computador, via browser aparece o seguinte erro:

Exception
com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost:8084/JavaWebStart/app/Arquivo.jnlp

Wrapped Exception
java.net.ConnectException: Connection refused: connect

Alguém sabe como arrumar?

Ola,

Este erro dá no console do jws né?!

Bom, coloque a estrutura que vc tá usando ae, dos diretorios, onde está os jars e tais… pra gente poder te ajudar melhor…

Olá Bruno,

Esse erro aparece no console mesmo.
A estrutura é o seguinte:

  • META-INF
    context.xml
  • WEB-INF
    -lib
    jnlp-servlet.jar
    web.xml
  • app
    Arquivo.jnlp
    Arquivo.jar
    swing-layout-1.0.jar
    log4j-1.2.12.jar
    quartz.jar
    index.jsp

O estranho é que na minha máquina ele roda normalmente, só que de outro PC não roda.
Obrigado pela atenção

è… parece que é alguma coisa no seu arquivo jnlp… coloca ele ae pra gente dar uma olhada.

Esse é o JNLP:

<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE jnlp PUBLIC “-//Sun Microsystems, Inc.//DTD JNLP 1.5//EN” “http://www.netbeans.org/jnlp/DTD/jnlp.dtd”>
<jnlp codebase=“http://localhost:8084/JavaWebStart1” href=“app/Arquivo.jnlp” spec=“0.2 1.0”>
<information>
<title>InterJDE</title>
<vendor>Alliance Consultoria</vendor>
<homepage href=“http://localhost:8084/JavaWebStart1/index.jsp”/>
<description>InterJDE</description>
<description kind=“short”>Software de Integracao</description>
<icon href=“imagem/gf.jpg”/>
<offline-allowed/>
<shortcut online=“true”>
<desktop/>
<menu submenu=“InterJDE”/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources locale="" os="">
<j2se href=“http://java.sun.com/products/autodl/j2se” version=“1.4+”/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/Arquivo.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/classes12.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/quartz.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/commons-logging.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/AbsoluteLayout.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/jcalendar.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/swingx.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/forms-1.0.6-snapshot.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/binding-1.0.2-snapshot.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/looks-1.3.3.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/swing-layout-1.0.jar” main=“false” version=""/>
</resources>
<resources locale="" os="">
<property name=“swing.defaultlaf” value=“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”/>
</resources>
<resources locale="" os="">
<property name=“java.security.policy” value=“rmi.policy”/>
</resources>
<resources locale="" os="">
<jar download=“eager” href=“app/log4j-1.2.12.jar” main=“false” version=""/>
</resources>
<application-desc main-class=“arquivo.Main”>
</application-desc>
</jnlp>

Ola,

Na tag codebase faça assim… é melhor:

&lt;jnlp codebase=&quot;$$codebase&quot; href=&quot;Arquivo.jnlp&quot; &gt;
E ao invés de colocar, lembrando que a sua referencia agora é o diretorio… por isto não estava funcionando… o arquivo jnlp e os jars estavam no mesmo pacote… e vc estava referenciando como se houvesse mais um ‘app’ :

&lt;resources locale=&quot;&quot; os=&quot;&quot;&gt; &lt;jar download=&quot;eager&quot; href=&quot;app/Arquivo.jar&quot; main=&quot;false&quot; version=&quot;&quot;/&gt; &lt;/resources&gt; , simplifique…

&lt;jar download=&quot;eager&quot; href=&quot;Arquivo.jar&quot; main=&quot;false&quot;/&gt;

Bruno, deu certo aqui!

Troquei local host pelo IP da máquina.

Valeu!!

Ola,

Seguinte… esqueci de comentar… este valor que vc poe, ‘$$codebase’, se vc mapear o servlet que tem no jws, ele transforma pra vc no host da maquina…

Da uma olhada, esta e a documentação geral:
http://java.sun.com/javase/6/docs/technotes/guides/javaws/index.html

E esta do servlet:
http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html

Fala Bruno,

Tenho um JAR dentro de um diretório no pc. O JWS consegue atualizar um determinado JAR dentro de uma específica pasta? Dá para fazer este apontamento?

ola,

olhe, vc quer que o jws sozinho faça isto? se for não tem como… pq ele sói acessa o diretorio dele… mas se vc quizer criar um programa, o seu mesmo, que faça isto dá sim, mas teras que assinar o seus jars que são baixados pelo jws… assim vc terá acesso ao F.S local, dae seria vc fazer isto como se estivesse programando em desktop sem jws… saca?

Então sendo mais objetivo, seria melhor programar em desktop, utilizando o JFileChooser para escolher o diretório onde o aplicativo será salvo?

Haaa… bom, como um bom conselho… se é para instalar o programa, acho melhor vc deixar o default, pq se vc precisar atualizar o programa o jws já te dá todo o suporte para isto, tipo, só vc atualizar o servidor e todos os ‘clientes’ serão atualizados na primeira execução…

mas se vc quizer fazer assim mesmo… seria este ‘programa desktop’ o seu programa via jws, e este puxaria, na mão, o programa de verdade para o local escolhido… mas acho que dará dois trabalhos… que vc pode resolver com só o programa mesmo via jws…

Então Bruno a situação é o seguinte:

Na máquina dos clientes tem a minha aplicação instalada. Preciso atualizar o servidor. Só que este é um JAR dentro de um diretório e quando abro o a aplicação via JWS ele se encontra no cache do JWS. Fiz um teste mudando o JAR do servidor, mas quando fui verificar o JAR do servidor, não tinha acontecido nada, manteve o mesmo de antes.