Olá, pessoal!
Depois de muito procurar uma solução, resolvi perguntar aqui para ver se alguém tem alguma luz. Para tanto, vou postar abaixo o código fonte:
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/scp" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/DDB"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
username="User"
password="*****"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://191.167.11.7/DDB;"
maxWait="1000"
removeAbandoned="true"
maxActive="5"
maxIdle="1"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</Context>
Conexao.java
/**
*
*/
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
/**
*
*/
public class Conexao {
private Context initialContext;
private Context envContext;
private DataSource datasource;
private Connection connection;
private Statement statement;
private ResultSet resultset;
/**
* Construtor que pega uma conexão do pool
*/
public Conexao() {
try {
initialContext = new InitialContext();
} catch (NamingException ne) {
System.out.println("Couldn't build an initial initialContext: " + ne);
return;
}
try {
envContext = (Context) initialContext.lookup("java:comp/env");
datasource = (DataSource) envContext.lookup("jdbc/DDB");
connection = datasource.getConnection();
statement = connection.createStatement();
} catch (NamingException e) {
System.out.println("JNDI lookup failed : " + e);
} catch (SQLException e) {
System.out.println("Connection failed : " + e);
}
}
public ResultSet executeSQL(String sql) {
try {
resultset = statement.executeQuery(sql);
} catch (SQLException e) {
System.out.println("Query execution failed : " + e);
}
return resultset;
}
public void closeAll() {
try {
resultset.close();
statement.close();
connection.close();
} catch (SQLException e) {
System.out.println("Connection close failed : " + e);
}
}
}
web.xml
<resource-ref>
<res-ref-name>jdbc/DDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Acontece que quando o construtor Conexao tenta executar a linha
connection = datasource.getConnection();
Dá a seguinte exception:
AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@1148603)
LogAbandoned: true
RemoveAbandoned: true
RemoveAbandonedTimeout: 60
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (I/O Error: Stream 0 attempting to read when no request has been sent)
Alguém tem alguma idéia do que esteja acontecendo?