JNDI + tomcat

11 respostas
C

Olá Pessoal!

Estou tentando configurar a conexão com o banco de dados pelo tutorial
http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html, porém obtenho o erro:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

Valeu!

11 Respostas

ramilani12

Como vc definiu o DataSource?
Pelo erro vc nao informou a url de conexao com banco de dados

C

Fiz exatamento como se encontra no artigo…

furutani

Olá

Existe difereças na forma de configurar o JNDI no tomcat 4.1, 5.0 e 5.5.
Faça uma busca no forum que você acha como configurar.

C

furutani:
Olá

Existe difereças na forma de configurar o JNDI no tomcat 4.1, 5.0 e 5.5.
Faça uma busca no forum que você acha como configurar.

Já olhei vários tutotiais e Post de diversos foruns, sinceramente não sei mais o que posso fazer, irei postar a seguir o que fiz até o momento:

Meu tomcat é 5.5.23:

// webApp/WebContent/META-INF/context.xml

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TestDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>

Classe lookup

package foo;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBTest {
	String foo = "Not Connected";
	int bar = -1;

	public void init() {
		try {
			   
			Context initContext = new InitialContext();
			Context envContext  = (Context)initContext.lookup("java:/comp/env");
			DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");		

			if (ds != null) {
				Connection conn = ds.getConnection();

				if (conn != null) {
					foo = "Got Connection " + conn.toString();
					Statement stmt = conn.createStatement();
					ResultSet rst = stmt
							.executeQuery("select id, foo, bar from testdata");
					if (rst.next()) {
						foo = rst.getString(2);
						bar = rst.getInt(3);
					}
					conn.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String getFoo() {
		return foo;
	}

	public int getBar() {
		return bar;
	}

}
ramilani12

Na sua versão do TomCat que vc esta utilizando, vc precisa definir o DataSource dentro do arquivo server.xml que se encontra diretorio onde estra instala. tomcat/conf/server.xml e acrescentar entre as tags <host> </host>

<Context path="/minhaAplicacao" docBase="minhaAplicacao" debug="0">
  		<Resource name="jdbc/myDataSource" auth="Container" type="javax.sql.DataSource"
                 maxActive="100" maxIdle="30" maxWait="10000"
                 username="user" password="password" driverClassName="oracle.jdbc.driver.OracleDriver"
                 url="jdbc:oracle:thin:@localhost:1526:AAAAA"/>
           </Context>

E no web.xml da sua aplicacao:

<!-- Configuração data Source TomCat -->
  <resource-ref>
  	<description>Conexao Oracle </description>
  	<res-ref-name>jdbc/myDataSource</res-ref-name>
  	<res-type>javax.sql.DataSource</res-type>
  	<res-auth>Container</res-auth>
  </resource-ref>

veja o tutorial: http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html

C

Já tentei esse procedimento, porém não obtive sucesso, por favor alguém já implementou isso e pode me ajudar.

Valeu

C

Problema resolvido! Obrigada a todos!

andre_guitar7

Eu não entendo porque o pessoal não coloca a solução no post.

bastides

Bom dia christielencc, será que você teria a bondade de postar a resolução do seu problema para ajudar outras pessoas com a mesma duvida?

[]'s

B

bastides:
Bom dia christielencc, será que você teria a bondade de postar a resolução do seu problema para ajudar outras pessoas com a mesma duvida?

[]'s


++

Desculpem ressuscitar o tópico mais gostaria também que você christielencc postasse a sua solução, o que eu acho difícil mas não custa pedir não é!
Agradeço também o ramilani12 pelas dicas!

Jaider

SE VOCÊ TIVER USANDO ECLIPSE, FAÇA ASSIM:

META-INF/context.xml

<Context>

<Resource name=“jdbc/mkyongdb” auth=“Container” type=“javax.sql.DataSource”
maxActive=“50” maxIdle=“30” maxWait=“10000”
username=“mysqluser” password=“mysqlpassword”
driverClassName=“com.mysql.jdbc.Driver”
url=“jdbc:mysql://localhost:3306/mkyongdb”/>

</Context>

Criado 20 de agosto de 2007
Ultima resposta 15 de abr. de 2014
Respostas 11
Participantes 7