Estou colocando uma aplicação desktop em JSE para rodar em java web start, esta aplicação possui pelo menos uns 50 jars na biblioteca, sendo eles jar de hibernate, jpa…e subprojetos integrados, a aplicaçao rodando em jar local demora cerca de 20s para carregar, isso é inicializar o hibernate fazer a verificação inicial em NamedQuerys, em um banco de em media 200 tabelas.
Depois que coloquei essa aplicação em java web start a aplicação varia muito de cliente a cliente no tempo de execução tem clientes que demoram 40s para executar, outros 2 min e ja chegou ate a 5 min, isso em maquinas quadcore 2gb, estou tentando descobrir oque possa ser mas nao estou encontrando nada de diferente, segue o meu arquivo jnlp
[code]<?xml version=“1.0” encoding=“UTF-8”?>
<jnlp spec=“6.0+” codebase=“http://www.servidor.com.br/” href=" http://www.servidor.com.br/erp.jnlp">
<information>
<title>Sistema</title>
<vendor>Sistema</vendor>
<homepage href=“http://www.servidor.com.br”/>
<description>ERP</description>
<icon href=“http://www.grupointesis.com.br/icone/erp.ico” kind=“shortcut”/>
<icon href=“http://www.grupointesis.com.br/imagens/erp.png”/>
<icon href=“http://www.grupointesis.com.br/imagens/splash.png” kind=“splash”/>
<shortcut online=“true”>
<desktop/>
<menu submenu=“ERP”/>
</shortcut>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check=“timeout” policy=“prompt-update”/>
<resources>
<java version=“1.6+”/>
<jar href="/principal.jar" download=“eager” main=“true”/>
<jar href="/lib/swing-layout-1.0.4.jar" download="eager"/>
...
</resources>
<application-desc main-class="gui.principal.view.splash.SplashJProgressBar"/>
</jnlp>[/code]
O que tenho de fazer para melhorar o desempenho da aplicação rodando pelo web start?
eu tive um problema similar, e só descobri o que era depois de habilitar o Java Console e ver o que ele estava fazendo
digita aí (não sei se é windows ou linux ou mac), mas via linha de comando eu rodei javaws -viewer
na janela que abriu eu removi totalmente a aplicação
depois configurei para o Java mostrar o console (se não souber como faz, vai no Google e procurar por “como habilitar java console” e veja como faz no seu Sistema Operacional
depois disso uma janela será aberta quando vc executar qualquer coisa java
acesse o JNLP (via browser ou com o javaws, direto da URL que seu cliente vai acessar)
vai aparecer a janela perguntando se pode executar o conteúdo, blabla e o Java Console, clique no console e digite o número 5, isso vai configurar o tracelevel para level 5
aí vc vai poder ver tudo que está acontecendo, que arquivos estão sendo baixados, algum eventual erro …
no meu caso os jars (libs) da aplicação não estavam sendo baixados do diretório que eu os coloquei, mudei para o diretório que apareceu no log que ele estava procurando e o carregamento foi instantâneo
o pessoal fala muito de um JaNeLa: http://pscode.org/janela/
caso o console não resolva, da uma olhada nesse JaNeLa e pode te dar alguma pista
espero que tenha ajudado
entao eu estou verificando pelo java console, na opção 5 para mostrar tudo, e percebi o seguinte
cache: Reading Signers from 1126 http://www.dominio.com.br/sistema/ERP/lib/activemq-core-5.4.2.jar | C:\Users\User\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\49\96d39b1-17c3eb1b.idx
cache: Read manifest for http://www.dominio.com.br/sistema/ERP/lib/activemq-core-5.4.2.jar: read=4336 full=98615
security: JAVAWS AppPolicy Permission requested for: http://www.dominio.com.br/sistema/ERP/lib/activemq-core-5.4.2.jar
security: Istrusted: http://www.dominio.com.br/sistema/erp.jnlp true
cache: Reading Signers from 1126 http://www.dominio.com.br/sistema/ERP/lib/hibernate-entitymanager.jar | C:\Users\User\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\38\6dd46d66-1a017992.idx
cache: Read manifest for http://www.dominio.com.br/sistema/ERP/lib/hibernate-entitymanager.jar: read=237 full=4109
security: JAVAWS AppPolicy Permission requested for: http://www.dominio.com.br/sistema/ERP/lib/hibernate-entitymanager.jar
security: Istrusted: http://www.dominio.com.br/sistema/erp.jnlp true
cache: Reading Signers from 1126 http://www.dominio.com.br/sistema/ERP/lib/postgresql-8.4-701.jdbc4.jar | C:\Users\User\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\43\4cfb3b6b-5bf5109c.idx
cache: Read manifest for http://www.dominio.com.br/sistema/ERP/lib/postgresql-8.4-701.jdbc4.jar: read=113 full=9377
security: JAVAWS AppPolicy Permission requested for: http://www.dominio.com.br/sistema/ERP/lib/postgresql-8.4-701.jdbc4.jar
security: Istrusted: http://www.dominio.com.br/sistema/erp.jnlp true
cache: Reading Signers from 1126 http://www.dominio.com.br/sistema/ERP/lib/xalan-2.7.1.jar | C:\Users\User\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\53\20f755b5-35cdf58a.idx
cache: Read manifest for http://www.dominio.com.br/sistema/ERP/lib/xalan-2.7.1.jar: read=697 full=69271
security: JAVAWS AppPolicy Permission requested for: http://www.dominio.com.br/sistema/ERP/lib/xalan-2.7.1.jar
security: Istrusted: http://www.dominio.com.br/sistema/erp.jnlp true
...
Isso é para cada jar da minha aplicação, mais ou menos uns 50, ele faz essa verificação, e as vezes acaba sendo demorado o carregamento da aplicacao, em alguns clientes o absurdo de 5 minutos
você assinou todos esses jars ?
no seu META-INF/Manifest tem o hash deles ?
isso está em uma rede local ou na Internet ? Em uma rede local não deveria demorar tanto assim
entao os jars estao assinados, coloquei para serem assinados no proprio netbeans, se eu nao assino a aplicação nao roda, a aplicação esta em um servidor web, onde os clientes baixam o sistema, por uma pagina web.
Quanto ao arquivo Manifest, eu nem tenho ele criado, acho que estou deixando passar esse detalhe.
Como faria isso?
Quando compilei pelo netbeans, marcado com webstart, ele cria o arquivo manifest.mf, automaticamente pelo ant dentro do meu jar principal em META-INF
abri o .jar e no diretorio META-INF tem os seguintes arquivos
.RSA
.SF
.LIST
.MF
no Metainf.MF tem varios Digest para diferentes classes e imagens
Name: gui/view/tablemodel/ClienteModel.class
SHA-256-Digest: Ai8y4ujN5u/rrioLAZloJHaUDyYbnhlBZHrenml/MpU=