Bonjour,
Je souhaite réaliser une transaction distribuée dans une servlet sous glassfish. Pour cela, d'après mes recherches il m'est nécessaire d'utiliser une XADataSource (si ce n'est pas le cas prévenez moi tout de suite et mon problème sera résolu!). J'ai donc configuré glassfish comme suit:
Connection pool:
Name: transactions
Datasource classname : com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
Resource type: javax.sql.XADataSource
JDBC Resource:
JNDI name: jdbc/transactions
Pool name: transactions
Je pense qu'il est inutile que je poste ici le contenu de mon domain.xml qui, après vérification, contient bien toutes ces informations.
Mon problème est lors du chargement de la ressource dont voici le code:
Ceci renvoi l'exception suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 InitialContext context = new InitialContext(); XADataSource dataSource = (XADataSource) context.lookup("jdbc/transactions"); ...
java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.DataSource40 cannot be cast to javax.sql.XADataSource
Alors que ceci fonctionne parfaitement:
Remarque: Lorsque j'utilise un DataSource, je ne parviens certes pas à mettre en place ma transaction distribuée, mais j'accède correctement à la base. Autrement dit tout semble fonctionner parfaitement, mais les types de ressources ne correspondent pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 InitialContext context = new InitialContext(); DataSource dataSource = (DataSource) context.lookup("jdbc/transactions"); ...
J'espère que mon problème vous inspirera! Merci d'avance
Partager