J'ai une application web fonctionnant dans Tomcat 6, et j'ai réussi à la configurer pour utiliser le pool de connexions DBCP intégré, et tout fonctionne très bien, mais je suppose qu'il fonctionne dans le mauvais niveau d'isolation sur le base de données. Je voudrais qu'il s'exécute en lecture non validée, mais je pense qu'il s'exécute en lecture et ne sait pas comment le définir.Puis-je définir le niveau d'isolement JDBC à partir d'un contexte Tomcat?
Voici le fichier XML de mon contexte:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true">
<Resource
name="jdbc/Connection"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://...etc..."
/>
</Context>
Et ceci est la méthode Java utilisée pour obtenir une connexion de base de données.
public Connection getDatabaseConnection() throws ServletException {
try {
InitialContext cxt = new InitialContext();
if (cxt == null) {
throw new ServletException("ServletContext unavailable.");
}
DataSource ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/Connection");
if (ds == null) {
throw new ServletException("Data source not found!");
}
Connection conn = ds.getConnection();
return conn;
} etc...
Après avoir obtenu la connexion en getDatabaseConnection()
je me rends compte que je pouvais régler manuellement le niveau d'isolation avec conn.setIsolationLevel(Connection.TRANSACTION_READ_UNCOMMITTED)
mais qui se sent mal qu'il soit implique coder en dur le niveau d'isolation dans Java, ou d'effectuer une consultation à la contexte de servlet chaque fois qu'une nouvelle connexion est requise. Puis-je définir cela dans le contexte XML d'une façon ou d'une autre, ou y a-t-il une meilleure approche que je ne connais pas?