Datasource TOMCAT 7

16 respostas
C

Bom dia pessoal, estou com uma dúvida, estou criando um Datasource no tomcat 7, e gostaria de saber se é possivel eu criar esse Datasource direto no tomcat, sem ter que criar um arquivo context.xml no META-INF da minha aplicação. Lembrando que é uma aplicação web e estou usando o Tomcat: apache-tomcat-7.0.26

desde já agradeço.

16 Respostas

M

caiomacedor,

Se conseguir posta a sua solução ai, pesquisei a documentação do Tomcat 7, Vi algumas pessoas comentando que é possível fazer. Mas não encontrei nenhum conteúdo explicando o passo a passo, então eu desisti e migrei de servidor, não só por causa desse detalhe claro !

ps: Migrei para o Jboss 7 que por sinal é muito bom

Att,

L

Acredito que sim, caso você use um datasource e descreva no web.xml o nome jndi.

C

magnocosta, Eu também já pensei em mudar para o JBoss, até coloquei ele por duas semanas, mas ví que ele consome bem mas memoria que o tomcat, e a aplicação que estou usando não requer quase nada que tenho a disposição no Jboss.
Segue trechos do meu codigo:
web.xml:

<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/oracledb</res-ref-name> <res-type>oracle.jdbc.pool.OracleDataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

context.xml que esta no META-INF da aplicação:

<Context reloadable="true">
	<Resource 
		name="jdbc/oracledb" 
		type="javax.sql.DataSource"
		driverClassName="oracle.jdbc.OracleDriver" 
		url="jdbc:oracle:thin:@ip-server:ORADES"
		username="USER" 
		password="PASS" 
		maxActive="20" 
		maxIdle="10" 
		maxWait="-1"
	/>
</Context>

Esse arquivo é que eu não gostaria que ele ficasse na minha aplicação e sim no tomcat.

L

Você criou o datasource na pasta do tomcat ?

Senão acho que não precisa desse context.xml e deixe o seu web.xml do jeito que está.

Se não criou no tomcat aqui diz onde tem que colocar a configuração

http://www.coderanch.com/t/362966/Servlets/java/Datasource-web-xml

L

Só acho o teu res-type do web.xml diferente.

Geralmente se coloca assim

javax.sql.DataSource

mas não sei se precisa referenciar essa classe do oracle mesmo.

C

lele_vader, Eu acho que deve ter feito algo errado, na doc do tomcat não esta muito claro. Tem no tomcat esses arquivos: apache-tomcat-7.0.26\conf\context.xml e também apache-tomcat-7.0.26\conf\server.xml. Ai é que vem minha dúvida. Em qual dos arquivos devo fazer a declaração do Datasource? E se for no server.xml, entre quais tags tenho que colocar? Já tentei nos dois arquivos mas nenhum funfou… Só funcionou quando criei o context.xml no META-INF da aplicação.

L

Dá uma olhada no link que te passei

http://www.coderanch.com/t/362966/Servlets/java/Datasource-web-xml

L

Dá uma olhada nesse tbm.

http://www.java-samples.com/showtutorial.php?tutorialid=943

C

Ta osso, rsrsrs tentei das duas formas como esta nos links que você passou, mas sempre da esse exception na hora de criar a conexão:

public Connection getConnection() throws SQLException { try { Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource dataSource = (DataSource)envContext.lookup("jdbc/hsql"); if (this.connection == null || this.connection.isClosed()) { this.connection = dataSource.getConnection(); } } catch (Exception e) { throw new SQLException(e.getMessage()); } return connection; }

L

Mostra o seu arquivo do datasource.

Uma coisa estranha é que no seu arquivo você colocou o datasource como jdbc/oracledb e no lookup está o jndi como jdbc/hsql

Outra coisa é a sua classe no web.xml

geralmente se coloca javax.sql.DataSource

Dá uma olhada nisso.

C

É cara, nas alterações aqui agente acaba passando uma coisa que na verdade esta outra. Segue meus arquivos como esta agora.

web.xml

<resource-ref> <res-ref-name>jdbc/oracle11g</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

server.xml do tomcat

<Resource 
		name="jdbc/oracle11g" 
		type="javax.sql.DataSource"
		driverClassName="oracle.jdbc.OracleDriver" 
		url="jdbc:oracle:thin:@ip-da-maquina:1521:ORADES"
		username="user-do-db" 
		password="senha-do-db" 
		maxActive="20" 
		maxIdle="10" 
		maxWait="-1"
	/>

esses erros que vc notou é que estava tentando com o HQSLDB pra ver se funcionava, mas não foi.

L

Beleza.

Agora deixa eu ver como você chama o jndi.

Colocou o jndi para jdbc/oracle11g não é ?

L

Dá uma olhada depois no tomcat se o datasource está nos diretórios jndi, para ver se está subindo a configuração

C

lele_vader:
Beleza.

Agora deixa eu ver como você chama o jndi.

Colocou o jndi para jdbc/oracle11g não é ?

Esta assim:

public Connection getConnection() throws SysHomeException {
		try {		
			Context initContext = new InitialContext();
			Context envContext  = (Context)initContext.lookup("java:/comp/env");
			DataSource dataSource = (DataSource)envContext.lookup("jdbc/oracle11g");
			if (this.connection == null || this.connection.isClosed()) {
				this.connection = dataSource.getConnection();
			}
		} catch (Exception e) {
			throw new SysHomeException(e.getMessage());
		}
		return connection;
	}
C

Eu não entendi essa parte: Onde fica esses diretórios jndi no tomcat? Seria alguma diretorio que eu tenho que criar?

L

Não.
Falei para ver na arvore jndi para ver se aparece esse seu datasource.
Talvez para entrar na interface administrativa do tomcat terá que descomentar uma parte de um arquivo.xml

E a parte de realms eu acho.

Criado 6 de fevereiro de 2013
Ultima resposta 6 de fev. de 2013
Respostas 16
Participantes 3