Java Web Start não roda no cliente

12 respostas
H

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?

12 Respostas

B

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…

H

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

B

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

H

Esse é o JNLP:

<?xml version=“1.0” encoding=“UTF-8”?>

<!DOCTYPE jnlp PUBLIC “-//Sun Microsystems, Inc.//DTD JNLP 1.5//EN” “<a href="http://www.netbeans.org/jnlp/DTD/jnlp.dtd">http://www.netbeans.org/jnlp/DTD/jnlp.dtd</a>”>

<jnlp codebase=“<a href="http://localhost:8084/JavaWebStart1">http://localhost:8084/JavaWebStart1</a> href=“app/Arquivo.jnlp” spec=“0.2 1.0”>

<information>

<title>InterJDE</title>

<vendor>Alliance Consultoria</vendor>

<homepage href=“<a href="http://localhost:8084/JavaWebStart1/index.jsp">http://localhost:8084/JavaWebStart1/index.jsp</a>”/>

<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=“<a href="http://java.sun.com/products/autodl/j2se">http://java.sun.com/products/autodl/j2se</a> 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>
B

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="eager" href="Arquivo.jar" main="false"/&gt;
H

Bruno, deu certo aqui!

Troquei local host pelo IP da máquina.

Valeu!!

B

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

H

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?

B

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?

H

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

B

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…

H

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.

Criado 27 de dezembro de 2007
Ultima resposta 27 de dez. de 2007
Respostas 12
Participantes 2