Criar datasource no servidor Tomcat 8

Criar datasource no servidor Tomcat 8

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Criar datasource no servidor Tomcat 8

Criar datasource no servidor Tomcat 8

Olá amigos. Um problema muito comum na programação Java é o fato de adicionarmos os dados de conexão com o bando de dados diretamente em nosso código. Quando precisamos enviar a aplicar para outro servidor como homologação ou produção precisamos mudar o código. Então para isso temos uma solução prática que é criar um datasource no servidor de aplicação. Hoje utilizaremos o Apache tomcat 8.
Já tratamos de outros servidores como GlassFish, JBoss e Wildfly. Veja os links no final deste artigo.
Vamos ao que importa: Meu datasource no Tomcat! Mãos à obra!


Etapas a seguir:

  1. Criar o banco de dados “bdacademicNet”.
  2. Executar os comandos que estão no arquivo: “Script.sql”
  3. Criação da aplicação Web DataSourceTomcat
  4. Verificação do ambiente

Criar datasource no servidor tomcat


Acesse o arquivo de contexto no servidor tomcat “\conf\context.xml”. Adicione o seguinte código que define as informações de acesso ao banco de dados.

1
2
3
4
<Resource name="jdbc/DSAcademicNet" global="jdbc/DSAcademicNet"
		auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/bdacademicNet" username="root"
		password="teco01" maxActive="100" maxIdle="20" minIdle="5" maxWait="10000" />
*Atenção: Se você estiver fazendo este exemplo no eclipse.
Altere o arquivo "contex.xml" localizado na aba "ProjectExplorer".
Veja a imagem:

Criar datasource no servidor Tomcat 8

Em seguida adicione o código abaixo ao arquivo web.xml da sua aplicação. Esses dados fazem a ligação da sua aplicação com o datasource criado no servidor.

1
2
3
4
5
<resource-ref>
		<res-ref-name>jdbc/DSAcademicNet</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
   </resource-ref>

Pronto o seu servidor já está pronto para conectar ao banco de dados.

Criação da aplicação que utilizará o nosso datasource

Nossa aplicação terá uma página inicial (index.jsp) de apresentação, um servlet (DataSourceServlet) que acessará o banco de dados e por fim teremos uma página (resultado.jsp) que exibirá os dados consultados e uma mensagem!

Página principal do Sistema (index.jsp).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Datasource Tomcat 8</title>
</head>
<body>
	Este exemplo cria um Datasource no Tomcat 8.
	<br>
	<a href="DataSourceServlet">Chamar o Servlet</a>
	<br> Fonte:
	<a
		href="http://www.feltex.com.br/felix/criar-datasource-servidor-tomcat">
		Mais detalhes!</a>
</body>
</html>

Página de sucesso que exibirá o resultado da consulta (resultado.jsp).

1
2
3
4
5
6
7
8
9
10
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Datasource Tomcat 8</title>
</head>
<body>
Mensagem: ${mensagem}<br>
${lista}	
</body>
</html>

Este é o ponto mais importante do nosso exemplo. O servlet que fará a chamada ao Data Source e consultará a lista de alunos no banco de dados (DataSourceServlet).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package br.com.feltex.bancodados;
 
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
 
/**
 * Servlet implementation class DataSourceServlet
 */
@WebServlet("/DataSourceServlet")
public class DataSourceServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	public DataSourceServlet() {
		super();
	}
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Inicio ConexaoMySQL");
 
		List<String> listaNomes = new ArrayList<String>();
		String mensagem = "";
 
		try {
			Context ctx = new InitialContext();
			DataSource ds = (DataSource) ctx
					.lookup("java:/comp/env/jdbc/DSAcademicNet");
			Connection conexao = ds.getConnection();
 
			PreparedStatement pstm = conexao
					.prepareStatement("select * from tbaluno");
 
			ResultSet rs = pstm.executeQuery();
 
			while (rs.next()) {
				listaNomes.add(rs.getString("nome"));
			}
			rs.close();
			pstm.close();
			conexao.close();
 
			mensagem = "Consulta realizada com sucesso!";
 
			request.setAttribute("lista", listaNomes);
 
		} catch (Exception e) {
			mensagem = "Hove um erro no processamento." + e.getMessage();
			e.printStackTrace();
		}
 
		request.setAttribute("mensagem", mensagem);
		RequestDispatcher rd = request.getRequestDispatcher("resultado.jsp");
		rd.forward(request, response);
 
		System.out.println("Fim ConexaoMySQL");
	}
}

Pronto. Com as configurações feitas e uma aplicação de teste você poderá fazer uso de uma Datasource no seu TOMCAT.

Conclusão

Há muitas facilidades ao utilizarmos um datasource configurado no servidor. Além de ser uma configuração externa à aplicação podemos fazer mudanças no pool de conexão, mudanças de apontamento ao banco. Assim temos muitas vantagens no uso desses recursos.
Baixa aqui o código de exemplo

O que pode dar errado?


java.sql.SQLException: Cannot create JDBC driver of class ” for connect URL ‘null’.
Verifique se você alterou corretamente o arquivo context.xml. Reveja a etapa “Criar datasource no servidor tomcat”.

Caused by: java.sql.SQLException: No suitable driver

O Driver do MySQL não está disponível na pasta Lib do seu servidor. Para isso faça o download do driver do MySQL na pasta lib do servidor Tomcat.

Links relacionados

Datasource no JBoss
Datasource no WildFly
Datasource no NetBeans
Manual do Tomcat
Importando um projeto Web no Eclipse

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

Deixe um comentário