Datasource TOMCAT 7

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.

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,

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

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.

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

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.

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.

Dá uma olhada no link que te passei

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

Dá uma olhada nesse tbm.

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

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; }

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.

É 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.

Beleza.

Agora deixa eu ver como você chama o jndi.

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

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

[quote=lele_vader]Beleza.

Agora deixa eu ver como você chama o jndi.

Colocou o jndi para jdbc/oracle11g não é ?[/quote]

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;
	}

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

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.