IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)



Comment utiliser un DataSource avec Struts ?
auteur : Lionel Roux (aka RanDomX)
Bien qu'il ne soit pas recommandé de gérer la persistence des données dans la couche de présentation, il peut être utile d'accéder aux datasources directement.

Le DataSource manager de Struts est le composant en charge de la gestion des DataSources; il est configuré directement dans le fichier de configuration struts-config.xml. il peut être utilisé pour déployer n'importe quel pool de connections qui implémente l'interface javax.sql.DataSource.
Si aucun composant natif n'est livré, vous pouvez aussi utiliser le Jakarta Commons dbcp's BasicDataSource [org.apache.commons.dbcp.BasicDataSource] disponible dans le projet Commons chez Jakarta.


Vous devez configurer votre source de données (exemple pour PostgreSQL):

<data-sources> <!-- configuration for commons BasicDataSource --> <data-source type="org.apache.commons.dbcp.BasicDataSource"> <set-property property="driverClassName" value="org.postgresql.Driver" /> <set-property property="url" value="jdbc:postgresql://localhost/mydatabase" /> <set-property property="username" value="me" /> <set-property property="password" value="test" /> <set-property property="maxActive" value="10" /> <set-property property="maxWait" value="5000" /> <set-property property="defaultAutoCommit" value="false" /> <set-property property="defaultReadOnly" value="false" /> <set-property property="validationQuery" value="SELECT COUNT(*) FROM users" /> </data-source> </data-sources>
Note: la requête de la propriété validationQuery doit retourner au moins une ligne.

Vous pouvez ensuite utiliser directement cette connexion dans vos Actions:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { javax.sql.DataSource dataSource; java.sql.Connection myConnection; try { dataSource = getDataSource(request); myConnection = dataSource.getConnection(); // faire ici le traitmement à partir de la connexion. } catch (SQLException sqle) { ... } finally { try { myConnection.close(); } catch (SQLException e) { getServlet().log("Connection.close", e); } } }

Comment utiliser plusieurs DataSources avec Struts?
auteur : Lionel Roux (aka RanDomX)
Si vous avez besoin d'utiliser plusieurs DataSources dans votre application Struts, vous pouvez utiliser l'attribut key du noeud <data-source>, comme ceci:

<data-sources> <data-source key="FirstDataSource" type="org.apache.commons.dbcp.BasicDataSource"> ... <!-- idem question précédente --> ... </data-source> <data-source key="SecondDataSource" type="org.apache.commons.dbcp.BasicDataSource"> ... <!-- idem question précédente --> ... </data-source> ... </data-sources>
Vous pouvez ainsi accéder à vos DataSources de la manière suivante, en les référencant :

... try { dataSourceA = getDataSource(request, "FirstDataSource"); ... dataSourceB = getDataSource(request, "SecondDataSource"); ... } ...