Fonte: http://www.antoniopassos.pro.br/blog/?p=88
1)Configurando o pool de conexões…
No diretório META-INF da aplicação, crie um arquivo “context.xml” com o seguinte conteúdo…
<?xml version=”1.0″ encoding=”UTF-8″?>
<Context auth=”Container”>
<Resource
name=”jdbc/bd_teste”
type=”javax.sql.DataSource”
url=”jdbc:mckoi://localhost:59999/”
driverClassName=”com.mckoi.JDBCDriver”
username=”admin”
password=”123456″
maxActive=”100″
maxIdle=”20″/>
</Context>
Significado de cada atributo usado no arquivo “context.xml“…
- auth –> Atribui ao Apache Tomcat a responsabilidade de gerenciar a abertura e o fechamento das conexões
- name –> Nome dado ao pool de conexões. Deve obedecer o formato JNDIATENÇÃO: O NOME DADO AO POOL DEVERÁ SER O MESMO USADO NO ARQUIVO WEB.XML DA APLICAÇÃO.
- type –> Especifica o tipo como sendo DataSource
- url –> Especifica a localização do banco de dados. Deve obedecer o formato URL JDBC
- driverClassName –> Nome da classe do driver JDBC do banco de dados
- username –> Nome do usuário do BD
- password –> Senha do usuário do BD
- maxActive –> Número máximo de conexões ativas no pool
- maxIdle –> Número máximo de conexões inativas no pool
- maxWait –> Tempo máximo de espera por uma conexão, em milissegundos
2)Registrando o pool no aplicativo…
No arquivo “web.xml” da aplicação, insira as linhas abaixo…
<resource-ref>
<res-ref-name>
jdbc/bd_teste
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
ATENÇÃO: O valor em “<res-ref-name>” deve corresponder ao nome dado ao pool de conexões no arquivo “context.xml”. No caso a “jdbc/bd_teste”.
3)Testando o pool..
3.1) Crie uma classe “ServiceLocator.java” com o seguinte conteúdo…
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class ServiceLocator {
public static Connection getConexao(String JNDINome) throws Exception {
Connection con = null;
// Obtém a raiz da hierarquia de nomes
InitialContext contexto = new InitialContext();
// Obtém a origem dos dados
DataSource ds = (DataSource)contexto.lookup(“java:comp/env/” + JNDINome);
// Obtém uma conexão
con = ds.getConnection();
// Retorna a conexão
return con;
}
}
3.2) Crie um servlet, que use a classe ServiceLocator acima para obter uma conexão do pool…
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletExemplo extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private static final String JNDINome = “jdbc/bd_teste”;
public ServletExemplo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(“<h1>Filmes cadastrados</h1>”);
Connection con = null;
try {
con = ServiceLocator.getConexao(JNDINome);
} catch (Exception e) {
e.printStackTrace();
}
String sql = “SELECT * FROM filmes”;
PreparedStatement stmt;
try {
stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()){
out.println(“Código -> ” + rs.getInt(1) + ” Título -> ” + rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
<!–
google_ad_client = “pub-9909948656853681”;
google_ad_output = “textlink”;
google_ad_format = “ref_text”;
google_cpa_choice = “CAAQmbj2_gEaCNYZLJsrWhfIKL264YcBMAA”;
google_ad_channel = “9871635485”;
//–>