Quem funciona melhor pool de conexao do tomcat ou tem outro melhor?

Ola pessoal

Tenho minha aplicação web funcionando com TOMCAT … estou fazendo minha avaliacoes !!
Então preciso de algumas dicas !!!

é isso ai pessoal

obrigado galera

Para começar… JNDI não é pool de conexões… heheheh

gente de deus, ultimamente tem acontecido coisas estranhas aki rsrs

Jesus Christ!

:shock:

se alguem puder me orientar !
estou esperando !!!

obrigado

“Estou esperando” é coisa de grávida. E ela tem um prazo certo para esperar :slight_smile:

Em vez disso, se fizer sua lição de casa, vai ver que:

  • JNDI é apenas uma forma de acessar algum recurso (JNDI = Java Naming and Directory Interface, ou seja, é uma forma de consultar um serviço de nomes e diretórios).
  • Um recurso que pode ser acessado via JNDI é um connection pool, mas é possível usar JNDI para acessar, por exemplo, EJBs.
  • Existem diversos connection pools que podem ser usados.
    Normalmente você usa o que vem com o seu servidor de aplicações (por exemplo, WebSphere ou WebLogic ou Glassfish), mas no caso de você poder escolher (que é o caso do Tomcat), você pode usar o C3PO ou o DBCP. Veja: http://onjava.com/pub/a/onjava/2006/04/19/database-connection-pooling-with-tomcat.html

Ola entanglement e o pessoal do guj !

Muito obrigado pelas informações e criticas !
Agradeço a todos, estou aprendendo muuuito com voces !.
Tudo que tenho funcionando "em desktop e web" foi pesquisando, e muita coisa consegui aki no forum.

  • As criticas de voces me ajudaram muito a entender as coisas …

Vou ti explicar, eu encontrei varios tutoriais sobre pool de conexao, porque preciso implantar no meu sistema web.
Então, configurei pelo Tomcat, estar funcionando vou postar aki.

  • Ainda tem um problema que não sei ! estou pesquisando, mas toda ajuda será bem vinda !!! hehehe

da um erro: +ou- too many connection
segue o codigo:

colocar o arquivo [color=red]context.xml[/color] na pasta META-INF
<?xml version=“1.0” encoding=“ISO-8859-1”?>
<Context path="/conexaobanco1"> <<<<= D:/…/tomcat/webapp/nomedomeusite
<Resource
auth=“Container”
driverClassName=“com.mysql.jdbc.Driver”
maxActive=“20”
maxIdle=“10”
maxWait="-1"
name=“jdbc/conexaobanco1”
type=“javax.sql.DataSource”
url=“jdbc:mysql://localhost:3306/meu_banco_de_dados?autoReconnect=true”
username=“usuario”
password=“senha” />
</Context>
<!-- colocar o arquivo context.xml na pasta META-INF -->
<!-- JBOSS = name=“java:jdbc/conexaobanco1” trocar por TOMCAT = name=“jdbc/conexaobanco1” -->

Arquivo [color=blue]web.xml[/color] da pasta WEB-INF de sua aplicação
Colocar o driver mysql na pasta D:/tomcat/lib

<?xml version=“1.0” encoding=“ISO-8859-1”?>
<web-app 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”>

&lt;session-config&gt;
    &lt;session-timeout&gt;30&lt;/session-timeout&gt;
&lt;/session-config&gt;

&lt;resource-ref&gt;          
    &lt;description&gt;MySQL exemplo &lt;/description&gt;
    &lt;res-ref-name&gt;jdbc/conexaobanco1&lt;/res-ref-name&gt;
    &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
    &lt;res-auth&gt;Container&lt;/res-auth&gt;
&lt;/resource-ref&gt;

</web-app>
<!-- arquivo web.xml da pasta WEB-INF de sua aplicação -->
<!-- colocar o driver mysql na pasta D:/tomcat/lib -->

Listar os dados index.jsp
<%@page contentType=“text/html”%>
<%@page pageEncoding=“ISO-8859-1”%>

<!–taglib é uma tag JSP para declaração dos pacotes específicos JSTL através da URI apropriada e da sugestão de prefixo padrão, lembrando que essa etapa é importante, pois, definirá o prefixo de chamada das tags de cada pacote.–>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql”%>

<html>
<head>
<!-- setDataSource é uma tag JSTL para configuração de acesso ao servidor de banco de dados criando um objeto dataSource que será consumido pelas outras tags SQL, que neste caso está referenciando o nome JNDI referente ao pool de conexões. -->
<sql:setDataSource scope=“session” var=“ds” dataSource=“jdbc/conexaobanco1”/>

    &lt;title&gt;Exemplo JSTL - Manoel Pimentel &lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

    &lt;h1&gt;Listagem de Teste pool <a >Clientes</a> &lt;/h1&gt;
    &lt;hr&gt;
    &lt;!--A tag query é usada para processar uma setença SQL de seleção de registros e gerar um objeto ResultSet internamente na memória, conforme especificado no atributo   var, usando a conexão aberta  chamada "ds", que neste caso está definido no atributo dataDource através do uso de EL(Expression Language). --&gt;
    &lt;sql:query var="ResultadoProdutos" dataSource="${ds}"&gt;
        select * from teste
    &lt;/sql:query&gt;

    &lt;table border="1"&gt;
        &lt;thead&gt;
            &lt;th&gt;Codigo&lt;/th&gt;
            &lt;th&gt;Nome&lt;/th&gt;
        &lt;/thead&gt;
    

        &lt;!--forEach, implementa um laço  para fazer a interação no ResultSet  gerado pela tag query  conforme o atributo items.--&gt;
        &lt;c:forEach var="listaProdutos" items="${ResultadoProdutos.rows}"&gt;
            &lt;tr&gt;
                &lt;!--A tag out é responsável por gerar uma String de saída na tela --&gt;
                &lt;td&gt;&lt;c:out value="${listaProdutos.codigo}"/&gt;&lt;/td&gt;
                &lt;td&gt;&lt;c:out value="${listaProdutos.Nome}"/&gt;&lt;/td&gt;
           &lt;/tr&gt;
        &lt;/c:forEach&gt;

    &lt;/table&gt;
&lt;/body&gt;

</html>

cadastro cf001.jsp
<%@page contentType=“text/html”%>
<%@page pageEncoding=“ISO-8859-1”%>

<!–Chamada aos TLD’s de cada pacote JSTL -->
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql”%>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd”>

<html>
<head>
<!–Criação de um dataSource, que proverá uma conexão ao servidor de banco dados, note que o escopo de conexão está definido como sendo de sessão, dessa forma poderemos usar o mesmo objeto chamado “ds” de qualquer outra página JSP participante do mesmo gerenciamento de sessão.–>
<sql:setDataSource scope=“session” var=“ds” dataSource=“jdbc/conexaobanco1”/>

    &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
    &lt;title&gt;Tela Cadastro - Artigo Manoel Pimentel&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

    &lt;h1&gt;Exemplo JSTL - Tela de Cadastro&lt;/h1&gt;
    &lt;hr&gt;
    &lt;form name="tela4" action="incluir.jsp" method="post"&gt;
        &lt;label&gt;Código &lt;/label&gt;<br>
        &lt;input type="text" name="edtCodigo" value="1" align="center" size="10"/&gt;<br>
        &lt;label&gt;Nome: &lt;/label&gt;<br>
        &lt;input type="text" name="edtNome" size="60"/&gt;<br>

        &lt;label&gt;cnpj: &lt;/label&gt;<br>
        &lt;input name="d4" type="text" id="d4" value="" size="20"
                  onkeyUp="return txtBoxFormat(this, '99.999.999/9999-99', event);" maxlength="18"
                  style="background-color: #66FF99; text-align: center;"
                title="Digite a data"&gt;  

<label>Valor: </label>
<input type="text" name="valor" length="15" onkeypress="return formatar_moeda(this,',','.',event);">
        &lt;label&gt;Somente numero: &lt;/label&gt;<br>
        &lt;input type="text" name="numero" id="numero" maxlength="14" onKeyUp="javascript:somente_numero(this);" /&gt;<br>

       &lt;hr&gt;
        &lt;input  accesskey="o" type="submit" name="btnOK" value="OK"&gt;
        &lt;input  accesskey="c" type="reset" name="btnCancelar" value="Limpar"&gt;
    &lt;/form&gt;
&lt;/body&gt;

</html>

Incluir dados incluir.jsp
<%@page contentType=“text/html”%>
<%@page pageEncoding=“ISO-8859-1”%>

<!–Chamada aos TLD’s de cada pacote JSTL -->
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/sql” prefix=“sql”%>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd”>

<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<title>Tela Cadastro - Artigo Manoel Pimentel</title>
</head>
<body>

    &lt;!--Equivalente ao try/catch, a tag catch tenta executar o que estiver dentro de seu corpo, e caso ocorra alguma exceção, será capturada e armazenada na variável "ex". --&gt;
    &lt;c:catch var="ex"&gt;
        &lt;!--Cria uma transação com o banco dados, onde podemos executar de forma mais protegida e seqüencial, várias atualizações ou inserções. --&gt;
        &lt;sql:transaction dataSource="${ds}"&gt;   
            &lt;!--Executa algum comando como insert, update ou delete  e armazena o resultado na varável "gravaCli".  Note que estamos usando a tag sql:param para passar dinamicamente os valores em cada sinal de interrogação da cláusula values, vale lembrar que dessa forma, estaremos gerando uma espécie de sentença preparada, e dessa forma ganharemos performance na execução do comando SQL.  --&gt;
            &lt;sql:update var="gravaCli"&gt;
                insert into teste (codigo,Nome)
                values(?,?)
                &lt;sql:param value="${param['edtCodigo']}"/&gt;
                &lt;sql:param value="${param['edtNome']}"/&gt;
            &lt;/sql:update&gt;
        &lt;/sql:transaction&gt;
    &lt;/c:catch&gt;

<!–Essa é uma sacada legal, pois na tag ?out? abaixo, caso o objeto ?ex? esteja nulo(ou seja, sem exceção), será exibido o valor contido no atributo default, dessa forma a mensagem de sucesso só será exibida caso não tenha ocorrido nenhuma exceção. -->
<h1>
<c:out value="${ex}" default=“Operação executada com sucesso!”/>
</h1>
<hr>
<input type=“button” value=“Voltar” name=“btnVoltar” onclick=“history.back();”
></body>
</html>

Agradeco os comentarios …
VALEEEUUUU