|
|
Forum JCMS francophone > Datasource et weblogic
Datasource et weblogic
Bonjour,
Nous rencontrons un problème dans une webapps JCMS pour attaquer une base de données postgresql.
Nous développons sur un serveur tomcat v.6 et nous avons un serveur de recette (identique à la prod) sous weblogic. Nous attaquons la même base de données sous postgreSQL depuis les deux environnements.
Nous avons déclaré le datasource dans le serveur.xml sous tomcat et via la console d'administration weblogic en recette. Les datasources ont strictement le même jndiName dans les deux environnements.
En développement sous tomcat tout se passe bien.
En recette sous weblogic, il nous ai impossible d'établir la connexion alors que le test de connexion fait depuis la console d'administration fonctionne.
Nous venons de vérifier tous les paramètres de connexion et tout est bien déclaré.
Après quelques investigations, il s'avère que dans la console de supervision > Etat du site, aucune source de données n'est trouvées dans l'environnement weblogic alors que nous les retrouvons bien dans l'environnement tomcat. Avez-vous déjà eu des retours sur ce genre de différence de comportement de serveur ?
Configuration en développement :
Configuration en recette
Configuration commune
- Base postgreSQL 8.3.5
- Jcms 5.7.4
Re: Datasource et weblogic
Bonjour,
Si j'en juge par cette page de la documentation de BEA, Supported Database Configurations, PostgreSQL ne fait pas parti des bases supportées (nativement) par WebLogic 10.0.
En consultant la page dédiée au driver tiers, Using Third-Party JDBC Drivers with WebLogic Server, il n'y ai pas non plus fait mention de PostgreSQL...
Il faudrait donc probablement que vous vérifiez le driver que vous utilisez et sa compatibilité avec votre version de WebLogic.
Eventuellement contactez votre support BEA (de mon expérience, ils sont très réactifs).
PS: j'ai supposé que vous étiez sous WebLogic 10.0, et pas la toute récente 10.3
Liens supplémentaires : Database Connectivity for BEA WebLogic Server® 10.0
Re: Datasource et weblogic
En fait nous avons déjà 5 webapps (non JCMS) qui tournent sous weblogic et qui accèdent à des bases de données postgreSQL au moyen de datasources. Il n'y a donc aucun problème au niveau de la compatibilité Weblogic 10 / PostgreSQL 8.3.5.
Les sources de données sont déclarées au niveau de la configuration de notre serveur weblogic. Je suppose que JCMS implémente un lookup des connexions JNDI disponibles puisqu'il les affiche dans la rubrique "état du site", et donc il ne nous reste plus qu'à les utiliser en créer les connexions.
Nous allons essayer d'ajouter des Ressource-ref vers ces connexions jndi dans le descripteur de déploiement JCMS, mais nous n'en avons pas besoin sous tomcat ...
Re: Datasource et weblogic
Je suppose que vous avez suivi les indications de l'article JCMS 5.5 : interfaçage avec des bases de données externes, auquel cas vos datasources devraient apparaître sans problème dans les portlets SQL.
Si vous avez réalisé des développements spécifiques, nous fournissons dans la classe com.jalios.util.DBUtil les méthodes nécessaires pour l'accès à ces DataSources, peut-être que si vous ne passez pas par cette API, les DataQources ne vous sont pas retournées correctement.
Re: Datasource et weblogic
Nous avons bien créer les datasources comme indiqué dans la doc BEA (mais pour la version 10).
Nous avons finalement retrouvé nos datasources mais pour cela il a fallu ajouter les ressources dans les descripteurs de déploiement web.xml et weblogic.xml
Dans web.xml
<resource-ref>
<description>PostgreSQL Datasource</description>
<res-ref-name>jdbc/toto</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Dans weblogic.xml
<resource-description>
<res-ref-name>jdbc/toto</res-ref-name>
<jndi-name>jdbc/toto</jndi-name>
</resource-description>
Ces déclarations ont pour seul effet de faire un lookup sur les ressources JNDI déclarée au démarrage de la webapp, mais il me semblait que JCMS gérait ça également et nous permettait d'éviter ces déclarations (en tout cas ça a l'air d'être le cas sous Tomcat). Est-ce que je me trompe sur cette fonctionnalité de JCMS ?
Re: Datasource et weblogic
JCMS découvre les DataSource présentes en faisant effectivement un lookup JNDI lors de la première demande d'accès aux DataSource.
La difficulté est d'une part que la déclaration des DataSource sont propres à chaque Serveur d'Applications et d'autre part que les objets associées au binding "jdbc" ne sont pas toujours du même type. Pour pallier à ce dernier point, pour chaque binding découvert dans "java:comp/env", JCMS refait une requête JNDI sur avec le nom du binding ("jdbc/toto" dans votre cas).
Ceci dit je connais pas précisement comment Weblogic gère ses DataSources. Il se peut qu'il ne fasse d'une déclaration en lazy, lorsqu'une webapp lui indique qu'elle en a besoin.
Re: Datasource et weblogic
C'est bien ce que je comprenais du fonctionnement de JCMS. Du coup, je pense que le lookup JNDI que vous avez implémenté pour JCMS ne fonctionne pas sous weblogic - certainement pour les raisons que vous évoquez.
En attendant vous disposez maintenant d'une solution ...
Néanmoins, merci de nous informer si vous pensez faire évoluer JCMS pour corriger ce bug.
Re: Datasource et weblogic
Merci pour votre solution et nous vous tiendrons au courant si nous trouvons une solution.
|
|