Boa tarde pessoal! Estou tendo alguns problemas com a conexão Firebird. Meu ambiente é o seguinte: (Windows XP, Firebird 1.0, Eclipse 3.0, MVC, TomCat 4.1.29)
Bom tenho uma classe para conexão (ConectaFB), uma para tratar os dados (Gerente), um para a lógica de execução do programa (BeanGerente), e algumas páginas JSP para interface.
Quando faço a conexão com o Firebird e faço uma consulta recebo esta mensagem no console do TomCat:
log4j:ERROR No appenders could be found for category <org.firebirdsql.jca.IdleRemover>.
log4j:ERROR Please initialize the log4j system properly
? mas a página é exibida corretamente. Por que ocorre este erro? Como corrijo? :?:
Outro problema é quando vou gravar, ocorre o seguinte erro no console:
O primeiro erro é facil…
A classe org.firebirdsql.jca.IdleRemover do seu “driver” JDBC deve utilizar alguma instrução lo log4j para logar possíveis erros ou warnings…
Para corrigir esse erro, basta adicionar a biblioteca log4j-1.2.8.jar dentro do diretório commons/lib do seu tomcat…
Lembrando que esse erro que está acontecendo não prejudicará seu sistema em si…
O segundo erro creio que seja algo relacionado diretamente ao seu código…
poste aqui para nós a sua classe onde você efetua o insert na tabela…
Quanto ao segundo erro, por acaso voce esta tentando gravar informacoes acentuadas? Se for isso, provavelmente o seu problema e que vc conectou ao banco de dados sem fornecer o tipo de charset que ele deve utilizar. Vc informa o tipo de charset criando um objeto properties, que devera conter o nome do usuario, senha, e o charset, e passa como parametro na classe de conexao.
Agora nao lembro da sintaxe, mais assim que chegar em casa eu posto aqui.
Quanto ao primeiro erro, lhe pergunto: Vc disponibilizou para o Tomcat todas os JAR do jdbc do firebird necessarias? E que no jdbc do firebird tem um subdiretorio chamado lib. Todas os JAR deste subdiretorios devem ser disponibilizados para o Tom Cat. Um destes JAR inclusive e o log4j.
propriedades.setProperty("user", "SYSDBA";
propriedades.setProperty("password", "masterkey";
propriedades.setProperty("lc_ctype", "WIN1252"); // aqui defino o dicionário a ser utilizado
propriedades.setProperty("SQL_dialect", "3");
con = DriverManager.getConnection( url, propriedades);
con.setAutoCommit(false); // Aqui defino que o controle de transação sera manual.
stm = con.createStatement( );
propriedades.setProperty("user", "SYSDBA";
propriedades.setProperty("password", "masterkey";
propriedades.setProperty("lc_ctype", "WIN1252"); // aqui defino o dicionário a ser utilizado
propriedades.setProperty("SQL_dialect", "3");
con = DriverManager.getConnection( url, propriedades);
con.setAutoCommit(false); // Aqui defino que o controle de transação sera manual.
stm = con.createStatement( );
propriedades.setProperty(“lc_ctype”, “WIN1252”); // aqui defino o dicionário a ser utilizado
propriedades.setProperty(“SQL_dialect”, “3”);
No código abaixo:
public static Connection getConexao() throws Exception {
boolean FBDriverLoaded = false;
org.firebirdsql.jdbc.FBWrappingDataSource fbwds = null;
if (!FBDriverLoaded) {
try {
fbwds = new org.firebirdsql.jdbc.FBWrappingDataSource();
FBDriverLoaded = true;
} catch (Exception e) {
System.out.println(
"Could Not create org.firebirdsql.jdbc.FBWrappingDataSource, error: "
+ e
+ "\n");
}
fbwds.setDatabase("localhost:D:\\projetos\\parrot\\bd\\parrot.gdb");
fbwds.setUserName("SYSDBA");
fbwds.setPassword("masterkey");
fbwds.setIdleTimeoutMinutes(30);
fbwds.setPooling(true); // Ativa pooling para esta fonte de dados.
fbwds.setMinSize(5);
// Seta o numero minimo de conexoes mantidos no pool.
fbwds.setMaxSize(30);
// Seta o numero maximo de conexoes que podem ser abertas ao mesmo tempo.
try {
fbwds.setLoginTimeout(10);
} catch (SQLException e) {
System.out.println(
"Could not set Login Timeout in SQLDriver, error: "
+ e
+ "\n");
}
} else {
System.out.println(
"Firebird Driver already exists, not reloaded.\n");
}
return fbwds.getConnection();
}
infelizmente não poderei lhe ajudar, pois nunca utilizei um pool de conexões. Ainda estou engatinhando nesta linguagem
Mais acredito que os outros colegas poderão lhe dar a devida ajuda.
Mesmo assim, tente dar uma procurada nas mensagens anteriores deste grupo, na seção de tutoriais, em outros sites especializados em java como www.javafree.com.br, www.guj.com.br entre outros, e na própria internet através do google.
Tb esto engatinhando em Java, nem sabia que estava fazendo um pool de conexão. Apenas estou usando o exemplo fornecido pela API com algumas alterações. Mas de qualquer forma valeu mesmo.