Java webstart jar intermitente não atualizando
-
23-09-2019 - |
Pergunta
Usamos o Java Webstart para implantar um aplicativo Java em nossa intranet. O aplicativo recebe atualizações frequentes. Uma vez por algum tempo, um usuário iniciará o aplicativo do ícone da área de trabalho depois de atualizarmos os potes / guerra no servidor da web (o timestamp alterado) e o Java Webstart lançará a versão antiga em vez de baixar uma nova.
Aqui está uma pasta do nosso JNLP, como você pode ver, o offline é ativado, mas atualize a verificação sempre e a política sempre. Além disso, o sinalizador de download está ansioso. Pelo meu entendimento, essas opções devem sempre resultar em uma verificação do cache contra o timestamp no servidor e um download do arquivo JAR.
Estou começando a ficar frustrado com o Webstart! Alguém viu problemas semelhantes? Alguma soluções? Estou ficando cansado de levar as pessoas ao limpar seu cache do webstart manualmente a cada terceiro ou quinto atualização.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
<information>
<title>TITLE</title>
<vendor>VENDOR</vendor>
<description>Our Utility Application</description>
<description kind="short">Our Utility Application PRD</description>
<icon href="images/util_icon.png" height="64" width="64"/>
<offline-allowed/>
<shortcut online="true">
<desktop />
<menu submenu="Utility Apps"/>
</shortcut>
</information>
<security>
<all-permissions />
</security>
<update check="always" policy="always" />
<resources>
<!-- requires 1.6+ -->
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-ea" initial-heap-size="128m" max-heap-size="512m" />
<!-- application code, download jar before we start. -->
<jar href="OurUpdatedJarName.jar" main="true" download="eager" />
<property name="configfile" value="updatedJarName.config" />
</resources>
<application-desc main-class="main.Client">
<argument>-D</argument>
</application-desc>
</jnlp>
Solução
Você pode ter resolvido o problema - mas o JNLP Spec = "1.0+" - o elemento é suportado somente após o JNLP Spec 6.0+. Provavelmente, essa é uma das razões para suas atualizações falharem.
Outras dicas
Parece um problema de aplicativo Secure Store Service em vez do aplicativo de serviço BDC.
Certifique-se de que o ID do aplicativo Secure Store tenha os membros apropriados (o ID que você usou para Identidade do Windows do Windows).Ir para o Central Admin - Secure Store Service - Gerenciar - clique no aplicativo de destino - Editar clique em Next- e adicione todos os usuários que precisarão de permissão para acessar o tipo de conteúdo externo para "membros".
Eu tive os mesmos problemas que o seu e o resolvi fazendo o seguinte:
Mudar
<jar href="OurUpdatedJarName.jar" ...
para
<jar href="OurUpdatedJarName-$VERSION.jar" ...
Coloque a versão $ no
<a href="foo-$VERSION.jnlp">Run</a>
Atualizamos automaticamente a versão $ para cada implantação.
Eu sei que é uma solução feia, mas é uma que funciona para nós toda vez.
Pode estar relacionado a este post, http://www.coderanch.com/t/528570/jnlp-web-start/java/do-jnlp-file-updates-self
Este problema é causado por offline-allowed
marcação.
Se for especificado offline, o Java Web Start também verificará se uma atualização está disponível. No entanto, se o aplicativo já for baixado, o tempo limite após alguns segundos, nesse caso, o aplicativo em cache será iniciado. Dada uma conexão razoavelmente rápida do servidor, A versão mais recente do aplicativo geralmente será executada, mas não é garantida. O aplicativo, no entanto, pode ser executado offline.
Distribuímos os aplicativos Java Web Start em uma dúzia de países e, quando descobrimos que o aplicativo não estava atualizando corretamente, era para uma configuração Miss da rede do condado ou nas configurações de rede do computador do usuário, principalmente o proxy. Em nossas oficiais centrais na Espanha, a Web Java começa sempre funcionando bem.
Eu tenho usado o clone Java Webstart Nextx.jar. Eu rastreei meu problema de jar não atualizando para o uso do método urlConnection.getLastupDated (). Como ele usa o método da cabeça para obter o último nome do nome do arquivo, esse é o motivo pelo qual às vezes ele não é download devido ao cache do getLastUpdated (). Decidimos usar nosso próprio método de atualização de nosso aplicativo, pois o Webstart é falho.
A conta de serviço autônoma é uma conta universal que fornece acesso a dados iguais a todos os usuários autorizados.Você pode usar uma conta para todos os serviços ou uma conta para cada aplicativo de serviços.
É dependente do seu secondty, se você quiser restringi-lo a DataSource específico do aplicativo de serviço, então você precisa de uma conta dedicada, caso contrário você pode usar um para todos.