Salve!
é pseguinte: no jdk, roda perfeitamente a classe que pega a conexão com o banco firebird, no class path coloquei o driver jaybird-2.1.6-full… passo ele pro pacote .jar e jogo esse driver no pacote… a classe é encontrada, mas no jre ele aponta o seguinte stack
java.sql.SQLException: No suitable driver found for jdbc:firebirdsql:localhost/3050:C://Users//User//Desktop//08112010.GDB
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at QuipoSus.PooDri.getConexaoPool(PooDri.java:38)
O driver, o pacote, é o mesmo. E na ext não tem nada, nem nos classpaths do sistema… como está funcionando no jdk, acho q é alguma falha com as bibliotecas, mas não consigo resolver!
alguém tem alguma ideia do q pode ser?
valeu ae
Posta a tua classe de conexão pra analisarmos…
Esse C: está muito estranho…
Se não me engano, aí deveria vir o nome do teu BD e não o caminho físico da tua tabela… Enfim…
Posta aí…
ae vai
import org.apache.commons.dbcp.*;
import org.apache.commons.pool.*;
import org.apache.commons.pool.impl.*;
import java.sql.*;
import javax.sql.*;
import java.util.Properties;
public class PooDri {
static Properties props = new Properties();
public Connection getConexaoPool() {
Connection connUsingDriver = null;
Connection connUsingDataSource = null;
Statement stmt = null;
ResultSet rset = null;
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
String uri = "jdbc:firebirdsql:localhost/3050:C://Users//User//Desktop//08112010.GDB";
props.put("user", "sysdba");
props.put ("password", "masterkey");
props.put ("charset", "UTF8");
props.put("lc_ctype", "ISO8859_1");
//PoolingDriver Section
registerPoolingDriver(uri);
connUsingDriver = DriverManager.getConnection(uri, props);
System.out.println("[PoolingDriver] DB Name = " +
connUsingDriver.getMetaData().getDatabaseProductName());
//PoolingDataSource Section
DataSource dataSrc = getPoolingDataSource(uri, props);
connUsingDataSource = dataSrc.getConnection();
System.out.println("[PoolingDataSource] DB Name = " +
connUsingDataSource.getMetaData().getDatabaseProductName());
}
catch (Exception e) {
e.printStackTrace();
// Tela.Finaliza("Não conectou ao banco de dados");
}
finally {
try {
if (rset != null) {
rset.close();
}
if (stmt != null) {
stmt.close();
}
if (connUsingDriver != null) {
connUsingDriver.close();
}
if (connUsingDataSource != null) {
//connUsingDataSource.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
}
return connUsingDataSource;
}
/**Get a PoolingDataSource */
private static DataSource getPoolingDataSource(String uri, Properties props)
throws Exception {
ObjectPool connPool = getConnPool(uri, props);
DataSource dataSrc = new PoolingDataSource(connPool);
return dataSrc;
}
/**Register a PoolingDriver */
private static void registerPoolingDriver(String uri)
throws Exception {
ObjectPool connPool = getConnPool(uri, props);
PoolingDriver driver = new PoolingDriver();
driver.registerPool("user", connPool);
}
/**Get Connection Pool */
private static ObjectPool getConnPool(String uri, Properties props) throws Exception {
ObjectPool connPool = new GenericObjectPool(null);
ConnectionFactory connFactory = new DriverManagerConnectionFactory(uri,
props);
PoolableConnectionFactory poolableConnFactory = new PoolableConnectionFactory(connFactory,
connPool, null, null, false, true);
return connPool;
}
}
nunca havia usado o getConnection passando um Properties…
No mais… tira esse C://Users//User//Desktop//08112010.GDB e coloca o nome do teu BD no Firebird… sinceramente, nunca vi essa assinatura de URL de conexão, de repente até funcione, mas que está estranho está…
Abs []
Poutz cara… pior que no Firebird é assim…
Dá uma pesquisada aí e com uma simples mudança, acho que teu código funcionará… Só não vou dizer qual é, lógico…
Abs e sucesso nos estudos []
[EDIT] - Quando disse “dá uma pesquisada aí” o aí é no Link que passei…
[quote=adriano_si]Poutz cara… pior que no Firebird é assim…
Dá uma pesquisada aí e com uma simples mudança, acho que teu código funcionará… Só não vou dizer qual é, lógico…
Abs e sucesso nos estudos []
[EDIT] - Quando disse “dá uma pesquisada aí” o aí é no Link que passei…[/quote]
Mas ele funciona!!! perfeitamente, do começo ao fim, o servidor roda dias, mas só se for pelo jdk!!! isso é q está estranho… uso o jgrasp, por ele, funciona normal… quanto crio o .jar, com tudo, ele acha a classe e tals, mas dá aquele erro… de qualquer modo vou pesquisar no link sim
estás salvando teu Driver JDBC junto com teu jar ???
Tudo q está no classpath do projeto está também salvo no jar… são eles:
commons-dbcp
commons-pool
e jaybird-full
em tese, era pra funcionar…
Entendeste o erro né ? ele não está encontrando o Driver adequado… Estás usando o mesmo Driver no Jar ?? está na versão correta ?? Entra no Driver e vê se acha a classe FBDriver… Pelo jeito, é como se teu driver não estivesse visível pela aplicação… estás gerando o Jar como ???
Abs []
Gero o jar a partir do jgrasp. Fica certo, este FBDriver está lá dentro sim, é exatemente o mesmo arquivo. Ele fica como um arquivo, o programa vai criando as pastas org/firebirdsql/jdbc/ e lá está o FBDriver.class… tanto q ele acha, já testeis isso mudando o nome do caminho pra ocasionar um erro, já q é reflexão, só erra em tmp de execução… se o caminho ou nome nao estivessem lá, daria classe nao encontrada… isso eu já testei…
Também não é problema com as bibliotecas q vem no jaybird… vem uma lib, q estou adcionando também
Bom, mudei completamente minha classe… e agora ela retorna esse fwbds nulo, sempree…
package QuipoSus;
import java.sql.*;
import javax.sql.*;
import org.firebirdsql.jdbc.FBWrappingDataSource;
import java.util.Properties;
public class PooDri {
static boolean FBDriverLoaded = false;
static org.firebirdsql.jdbc.FBWrappingDataSource fbwds = null;
public Connection getConexaoPool() {
Connection con = 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/3050:C://Users//User//Desktop//sus08112010.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.
}
else {
System.out.println(
"Firebird Driver already exists, not reloaded.\n");
}
try {
fbwds.setLoginTimeout(10);
con = fbwds.getConnection();
}
catch (Exception e) {
System.out.println(
"Could not set Login Timeout in SQLDriver, error: "
+ e
+ "\n");
}
return con;
}
}