o xml fica na pasta conf/Catalina/localhost/ e nao na work/Catalina/localhost
De uma olhada tb se vc esta usando diretórios com espaço no nome…
tipo <contex docBase="C:\Arquivo de Programas\ …
Já ouvi dizer que issoa tb pode ser fonte de problemas…
Cannot create JDBC driver of class '' for connect URL 'null'
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:243)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:65)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
veja o erro que da cara, fiz tudo certo!!
veja o arquivo postgresql.xml que ta no diretorio:
C:\jakarta-tomcat-5.0.28\conf\Catalina\localhost
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:\\jakarta-tomcat-5.0.28\\webapps\\PROJETO" path="/PROJETO" reloadable="true" workDir="C:\\jakarta-tomcat-5.0.28\\work\\Catalina\\localhost\\PROJETO">
<Resource auth="Container" description="Postgresql DB Connection" name="postgresql" type="javax.sql.DataSource"/>
<ResourceParams name="postgresql">
<parameter>
<name>url</name>
<value>jdbc:postgresql://localhost:5432/banco</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>username</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
</ResourceParams>
</Context>
esse e o arquivo,
nesse tomcat 5.0.28 para windows nao veio a pasta Catalina/localhost dentro do work do container
entao eu crie as pastas C:\jakarta-tomcat-5.0.28\work\Catalina\localhost\SubwayInternet correto?
Eu joguei o jar do postgresql e o do pool e do dbcp dentro do common/lib do tomcat, ate ae tudo bem.
olha como esta meu web.xml dentro da minha aplicacao
<?xml version="1.0" encoding="UTF-8"?>
<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" >
<description>Postgres Connection Pooling Test</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>postgresql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
nada errado? nao é?
veja como esta meu codigo em java
Connection conn = null;
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/postgresql");
try {
conn = ds.getConnection();
out.println("Conectado com sucesso");
} catch (SQLException e1) {
out.println(e1.getMessage());
}
} catch (NamingException e) {
out.println(e.getMessage());
}
e mesmo assim nao funciona porque?
sendo que no linux eu fiz a mesma coisa e funcionou!!!
alguem saka o porque?
abracos…
O nome do arquivo xml deve ser o nome da sua aplicação. Portanto se a sua aplicação se chama PROJETO o xml deve se chamar PROJETO.xml.
e este arquivo deve ficar na pasta C:\jakarta-tomcat-5.0.28\conf\Catalina\localhost
**** conf e nao work ***
Pessoal na minha aplicação ja existia esse arquivo .xml dentro de conf/catalina… ai eu a o abri e adicionei o codigo acima, equando eu executo o Tomcat, ele volta o arquivo como antes, ouseja apaga o que acabei de inserir… o q pode ser isso? eu configuro o path da minha aplicação dentro do server.xml isso tem alguma coisa a ver?
Estou usando o tomcat 5.5.9 e estou tendo o mesmo problema, ja utilizei isto em versões anteriores e funcionava, além deste problema estou tendo alguns com tagLib tmb…!! acho que realmente esta versão ta com algum problema.
Realmente parece que o tomcat não esta inicializando as propriedades passadas no server.xml pois coloquei isto aqui
Context envContext = (Context)initContext.lookup("java:/comp/env");
BasicDataSource ds = (BasicDataSource)envContext.lookup("jdbc/MySQL");
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/aspen?autoReconnect=true");
ds.setUsername("root");
ds.setPassword("");
e funcionou perfeitamente…!! claro que não é a maneira correta de usar mais pelo menos mostra que temos problemas.
Eu tenho problemas sérios com isso também…
Quando eu configuro o pool no server.xml, não funciona, da o mesmo erro que o cara aí em cima está reportando…agora, se eu recorto o código do server.xml e colo no “minhaaplicacao.xml”, funciona perfeitamente!
E isso sempre aconteceu, se eu quiser deixar um recurso visívil para todas as minhas aplicações, não da, pq o “server.xml” não faz o papel dele.
Para quem ainda tem esse problema, a solução está aqui:
https://bugs.launchpad.net/ubuntu/+source/tomcat5.5/+bug/74781