Estou tendo um problema em criar um pool de conexões com o Tomcat, abaixo seguem o context.xml, web.xml e a classe de teste.
Sendo que eu coloquei o driver jdbc no $CATALINA_HOME/lib e a minha estrutura de pasta está assim:
- TestePoll
- META-INF
- context.xml
-WEB-INF - classes
- test
TestPool.class
- test
- web.xml
- context.xml
- src
- test
- TestPool.java
- test
- index.jsp
- META-INF
O problema é este, quando vou compilar a TestPool
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at test.TestPool.main(Unknown Source)
Context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/TestPool" reloadable="true" crossContext="true">
<Resource
auth="Container"
name="jdbc/test_pool"
type="javax.sql.DataSource"
url="jdbc:postgresql://10.2.5.1:5432/test"
driverClassName="org.postgresql.Driver"
username="postgres"
password="postgres"
maxActive="50"
maxIdle="25"
/>
</Context>
Web.xml:
<resource-ref>
<res-ref-name>jdbc/test_pool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
TestPool.java
package test;
import control.Client;
import model.ClientDAO;
import java.util.Iterator;
import java.util.ArrayList;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class TestPool{
public static void main(String args[]){
try{
InitialContext context = new InitialContext();
DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/test_pool");
ClientDAO clientDAO = new ClientDAO(dataSource.getConnection());
ArrayList<Client> elements = clientDAO.selectAll();
Iterator<Client> iterator = elements.iterator();
while(iterator.hasNext()){
System.out.println("Queue ID: " + iterator.next().getId());
}
} catch(SQLException e){
e.printStackTrace();
} catch(NamingException e1){
e1.printStackTrace();
}
}
}
Preciso configurar mais alguma coisa? Tem algo errado nos arquivos?
Eu estou usando o Tomcat 6 e a JVM 6
.