Prezados Srs.
Tenho um aplicativo em desenvolvimento, usando as tecnologias: Java SWING, JPA, EclipseLink, PostgreSQL e iReport. Desenvolvido para rodar em ambiente desktop, cliente x servidor com Java Web Start. Atualmente o primeiro módulo do sistema já esta liberado em ambiente de produção. Na rede local roda perfeitamente, agora quando o acesso é de fora da minha rede, o aplicativo leva em torno de 7:30" para acessar ao banco de dados, e isto está inviabilizando o acesso do aplicativo via HTTP.
Bom para iniciarmos a discussão. O acesso ao banco é feito através de uma classe que implementa o padrão Singleton, segue trecho da classe:
private GnsSvrGrs1a() {
// Mudando as propriedades da conexão.
propriedades = new HashMap<String, Object>();
propriedades.put(PersistenceUnitProperties.CLASSLOADER, this.getClass().getClassLoader());
if (path != null && path.getPath().contains("XXX.XX.XXX.XXX")){
propriedades.put(PersistenceUnitProperties.JDBC_USER, "usuario");
propriedades.put(PersistenceUnitProperties.JDBC_PASSWORD, "senha");
propriedades.put(PersistenceUnitProperties.JDBC_URL, "jdbc:postgresql://XXX.XX.XXX.XXX:5432/genesis");
propriedades.put(PersistenceUnitProperties.JDBC_DRIVER, "org.postgresql.Driver");
}
try {
EntityManagerFactory emf = new PersistenceProvider().createEntityManagerFactory("GENESIS-GERAIS", propriedades);
em = emf.createEntityManager();
} catch (Exception e) {
e.printStackTrace();
}
}// GnsSvrGrs1a.
// Método garante sempre a mesma instância ativa.
public static GnsSvrGrs1a getInstancia() {
if (instanciaGnsSvrGrs1a == null) {
instanciaGnsSvrGrs1a = new GnsSvrGrs1a();
}
return instanciaGnsSvrGrs1a;
}// getInstancia.
Agora vejam a discrepância, se gerar um jar deste projeto e executar na máquina cliente que está fora da minha rede local, sem a participação do JWS a inicialização do aplicativo baixa para 00:15", sete minutos e quinze segundos a menos do que o aplicativo estando sendo executado através do JWS.
Alguém tem conhecimento de alguma forma de melhorar o performance de aplicativos rodando sobre o JWS, nestas características que citei? Não quero executar a aplicação fora do JWS, pois o que mais me agradou fazendo uso do JWS é a facilidade de atualizações do aplicativo.
Olavo Jr.