é 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
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
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í…
zerokelvin
ae vai
importorg.apache.commons.dbcp.*;importorg.apache.commons.pool.*;importorg.apache.commons.pool.impl.*;importjava.sql.*;importjavax.sql.*;importjava.util.Properties;publicclassPooDri{staticPropertiesprops=newProperties();publicConnectiongetConexaoPool(){ConnectionconnUsingDriver=null;ConnectionconnUsingDataSource=null;Statementstmt=null;ResultSetrset=null;try{Class.forName("org.firebirdsql.jdbc.FBDriver");Stringuri="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 SectionregisterPoolingDriver(uri);connUsingDriver=DriverManager.getConnection(uri,props);System.out.println("[PoolingDriver] DB Name = "+connUsingDriver.getMetaData().getDatabaseProductName());//PoolingDataSource SectionDataSourcedataSrc=getPoolingDataSource(uri,props);connUsingDataSource=dataSrc.getConnection();System.out.println("[PoolingDataSource] DB Name = "+connUsingDataSource.getMetaData().getDatabaseProductName());}catch(Exceptione){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(Exceptione){e.printStackTrace();}}returnconnUsingDataSource;}/**Get a PoolingDataSource */privatestaticDataSourcegetPoolingDataSource(Stringuri,Propertiesprops)throwsException{ObjectPoolconnPool=getConnPool(uri,props);DataSourcedataSrc=newPoolingDataSource(connPool);returndataSrc;}/**Register a PoolingDriver */privatestaticvoidregisterPoolingDriver(Stringuri)throwsException{ObjectPoolconnPool=getConnPool(uri,props);PoolingDriverdriver=newPoolingDriver();driver.registerPool("user",connPool);}/**Get Connection Pool */privatestaticObjectPoolgetConnPool(Stringuri,Propertiesprops)throwsException{ObjectPoolconnPool=newGenericObjectPool(null);ConnectionFactoryconnFactory=newDriverManagerConnectionFactory(uri,props);PoolableConnectionFactorypoolableConnFactory=newPoolableConnectionFactory(connFactory,connPool,null,null,false,true);returnconnPool;}}
adriano_si
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 []
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…
zerokelvin
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…
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
adriano_si
estás salvando teu Driver JDBC junto com teu jar ???
zerokelvin
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…
adriano_si
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 []
zerokelvin
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
zerokelvin
?
zerokelvin
Bom, mudei completamente minha classe… e agora ela retorna esse fwbds nulo, sempree…
packageQuipoSus;importjava.sql.*;importjavax.sql.*;importorg.firebirdsql.jdbc.FBWrappingDataSource;importjava.util.Properties;publicclassPooDri{staticbooleanFBDriverLoaded=false;staticorg.firebirdsql.jdbc.FBWrappingDataSourcefbwds=null;publicConnectiongetConexaoPool(){Connectioncon=null;if(!FBDriverLoaded){try{fbwds=neworg.firebirdsql.jdbc.FBWrappingDataSource();FBDriverLoaded=true;}catch(Exceptione){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(Exceptione){System.out.println("Could not set Login Timeout in SQLDriver, error: "+e+"\n");}returncon;}}