Bonjour tout le monde,
Mon problème du jour est le suivant : j'essaye d'installer une application (bedework, moteur de calendrier) sur un JBoss, alors que par défaut elle tourne sur un tomcat. Quand je dis "par défaut" c'est que dans la doc ils disent :
En effet, on définit la datasource dans le server.xml et ensuite il fait le lien comme un grand :To use a new database, you will have to change the DataSource
information. Where this is specified varies among servlet containers. In Tomcat,
this
is in the server.xml file
Alors c'est cool, ça marche pour un tomcat MAIS pour un JBoss je n'arrive pas à le faire marcher, pourtant : je crée un fichier de datasource qui contient ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <DefaultContext> <Resource name="jdbc/calDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/calDB"> ... paramètres... ... </DefaultContext>
Au chargement de JBoss, pas de pb, ma datasource est chargée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <datasources> <local-tx-datasource> <!-- le nom de l'objet qui sera récupéré par les applications --> <jndi-name>calDB</jndi-name> <!-- url d'accès à la base de données --> <connection-url>jdbc:mysql://localhost/calDB</connection-url> <!-- classe du driver utilisé. Cette librairie doit être située dans le répertoire lib du serveur d'application --> <driver-class>com.mysql.jdbc.Driver</driver-class> <!-- nom d'utilisateur et mot de passe d'accès --> <user-name>calroot</user-name> <password>calroot</password> </local-tx-datasource> </datasources>
Sauf que les références à cette datasource sont faites en utilisant jdbc/calDB et non pas java:calDB. Ce qui est sûr c'est qu'au déploiement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 15:46:45,240 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:name=calDB,service=DataSourceBinding' to JNDI name 'java:calDB'
Du coup j'ai ouvert le fichier cité et j'y lis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (javax.naming.NamingException: resource-ref: jdbc/calDB has no valid JNDI binding. Check the jboss-web/resource-ref.)
J'avais jamais vu ce genre de choses, mais je me dis : y'a un nom JNDI, je vais tenter d'appeler ma datasource comme ça, donc je modifie mon fichier de datasource en précisant : <jndi-name>/CalendarDS</jndi-name>, mais ça marche toujours pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <resource-ref> <res-ref-name>jdbc/calDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <jndi-name>java:/CalendarDS</jndi-name> </resource-ref>
Du coup ma question c'est : comment faut il que je nomme ma datasource pour que l'appli fasse le rapprochement ? A priori c'est faisable sans toucher aux sources et aux jboss-web.xml, mais je m'y perds entre les noms jndi, les resource names, et autres machins.
Merci d'avance !
Partager