olá a todos,
tenho uma aplicação desktop com Swing e estava prestes a disponibiliza-lá pela rede (com o Java Web Starter) mas,
utilizo o hibernate e obviamente, tenho um arquivo de configuracao XML contendo dados muito importante (URL, usuario e senha do banco de dados)
entao, percebi que não haveria segurança, uma vez que a aplicação, o JAR, poderia ser descompacto e … não seria bom! 
alguém tem alguma solução ou idéia de como disponibilizar a mesma de forma segura?!?
valeu!
Hora de disponibilizar a aplicação Swing pela rede (Java Web Starter)
J
1 Resposta
Olá Josueh.
Resolvemos este problema colocando os itens importantes em uma classe que retorna um Map com este parametros que são utilizados para a createEntityManagerFactory., retirando assim do xml.
Veja se isto pode ter auxiliar, e retorne, se deu certo, ou a melhor maneira que vc encontrou para resovler este problema.
Neste exemplo é feito também a leitura de um arquivo .properties que contém informações do caminho do banco, porta e servidor, utiliza o FIREBIRD.
Porém usuário e senha são definidos em uma classe.
Caso alguém tiver um comentário, ou sugestão de melhoria tb agradeço.
Grato.
Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="SisClinicaPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>as.com.sisclinica.model.Auditoria</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.firebirdsql.jdbc.FBDriver"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.FirebirdDialect"/>
<property name="hibernate.connection.autocommit" value="false"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="false"/>
<property name="hibernate.connection.lc_ctype" value="WIN1252"/>
</properties>
</persistence-unit>
</persistence>
EntitySingleTon.java
package as.com.sisclinica.dao;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
public class EntitySingleTon {
private static EntityManager instance;
private EntitySingleTon() {
instance = Persistence.createEntityManagerFactory("SisClinicaPU", SearchLocationDB.buscarURL()).createEntityManager();
}
@SuppressWarnings("static-access")
public static EntityManager getInstancia() {
if (instance == null) {
EntitySingleTon singleTon = new EntitySingleTon();
return singleTon.instance;
}
return instance;
}
}
SearchLocationDB.java
package as.com.sisclinica.dao;
import as.com.sisclinica.gui.JMessage.JConfirmMessage;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SearchLocationDB {
public static Map buscarURL() {
try {
Properties properties = new Properties();
FileInputStream fis = new FileInputStream("locationDB.properties");
properties.load(fis);
fis.close();
Map prop = new HashMap();
//lc_ctype=WIN1252 --> Necesario para a codificação da acentuação no realtorios
//defaultResultSetHoldable=True --> Necessario para relatorios com subrelatorios(receita) --> problema encontrado com o jaybird
prop.put("hibernate.connection.url", "jdbc:firebirdsql:" + properties.getProperty("url") + "/" + properties.getProperty("porta") + ":" + properties.getProperty("caminho") + "?defaultResultSetHoldable=True;lc_ctype=WIN1252");
//parametros para usuário e senha do DB.
prop.put("hibernate.connection.username", "SYSDBA");
prop.put("hibernate.connection.password", "masterkey");
return prop;
} catch (Exception e) {
JConfirmMessage.showMessageDialog("Arquivo para caminho do banco de dados não encontrado!!!", "Atenção");
Logger.getLogger(EntitySingleTon.class.getName()).log(Level.SEVERE, null, e);
System.exit(0);
return null;
}
}
}
Criado 2 de novembro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 1
Participantes 2
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Casa do Codigo — Livros de tecnologia Livros de programacao, infraestrutura e inovacao