...
Le passage de JDBC vers JNDI se fait en modifiant trois plusieurs fichiers.
Modifier le rdbm.properties :
Bloc de code title uportal-war/src/main/resources/properties/rdbm.properties firstline 24 linenumbers true ##### Maven Filtering ##### Use these settings to define DB connection settings in filters file: hibernate.connection.jndiname=${environment.build.hibernate.connection.jndiname} ##### /filters/{env}.propertiesDéclarer la ressource JNDI "jdbc/uPortalDB" au niveau du serveur Tomcat :
Bloc de code language html/xml title <TOMCAT_HOME>/conf/server.xml <!-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html --> <GlobalNamingResources> <!-- Editable user database that can also be used by<Context path="/portail" docBase="/opt/webapps/uPortal" reloadable="false" crossContext="true" > UserDatabaseRealm to authenticate users --> <Resource name="UserDatabasejdbc/uPortalDB" auth="Container" type="javax.sql.DataSource" type="org.apache.catalina.UserDatabase" username="USER" password="PASSWORD" description="User database that can be updated and saved" factorydriverClassName="orgcom.apachemysql.catalinajdbc.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />Driver" url="jdbc:mysql://database.ip:3306/uPortal4" <Resource name="jdbc/uPortalDB" authmaxActive="100" maxIdle="Container30" type="javax.sql.DataSourcemaxWait="10000" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/postgres" usernamepoolPreparedStatements="A141474true" password="" validationQuery="select 1" removeAbandoned="true" removeAbandonedTimeout="120" maxWait="60" maxActiveremoveAbandonedTimeout="20300" maxIdle="10" /> </GlobalNamingResources>
Info crossContext est indispensable au bon fonctionnement du contexte uPortal, par exemple pour le partage de session ou pour Pluto.
Ajouter un lien vers la ressource dans la pplication uPortal :
Bloc de code title esup-uportal-master\uportal-war\src\main\webapp\META-INF\context.xml linenumbers true <Context crossContext="true" useHttpOnly="true" disableURLRewritingvalidationQuery="true"SELECT reloadable=1"false"> <Manager pathname="" className="org.apache.catalina.session.StandardManager"/> <ResourceLink global="jdbc/uPortalDB" namelogAbandoned="jdbc/uPortalDBtrue" type="javax.sql.DataSource"/> </Context>/>
Info crossContext est indispensable au bon fonctionnement du contexte uPortal, par exemple pour le partage de session ou pour Pluto.
Utiliser la ressource dans l'application. Modifier :
Bloc de code language html/xml title uportal-war/src/main/resources/properties/contexts/datasourceContext.xml <bean id="PortalDb" parent="basePooledDataSource"> <qualifier value="PortalDb"/> <property name="driverClassName" value="${hibernate.connection.driver_class}" /> <property name="url" value="${hibernate.connection.url}" /> <property name="username" value="${hibernate.connection.username}" /> <property name="password" value="${hibernate.connection.password}" /> </bean>
En :Bloc de code language html/xml title uportal-war/src/main/resources/properties/contexts/datasourceContext.xml <bean id="PortalDb" class="org.jasig.portal.spring.beans.factory.MediatingFactoryBean"> <property name="type" value="javax.sql.DataSource" /> <property name="delegateBeanNames"> <list> <value>PortalDb.JNDI</value> <value>PortalDb.direct</value> </list> </property> </bean> <bean id="PortalDb.JNDI" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/${hibernate.connection.jndiname}" /> </bean> <bean id="PortalDb.direct" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true"> <property name="driverClassName" value="${hibernate.connection.driver_class}" /> <property name="url" value="${hibernate.connection.url}" /> <property name="username" value="${hibernate.connection.username}" /> <property name="password" value="${hibernate.connection.password}" /> <property name="maxActive" value="50" /> <property name="maxIdle" value="10" /> <property name="maxWait" value="1000" /> <property name="removeAbandoned" value="true" /> <property name="removeAbandonedTimeout" value="300" /> <property name="logAbandoned" value="true" /> </bean>Configurer le fichier esup.properties :
Bloc de code title filters/esup.properties environment.build.hibernate.connection.jndiname=jdbc/uPortalDB
- Ajouter le jar du driver JDBC dans le répertoire lib de Tomcat (hsqldb-2.2.9.jar ou postgresql-9.1-901.jdbc4.jar ou mysql-connector-java-5.1.22.jar)
- Redéployer l'application
...
| Info | ||
|---|---|---|
| ||
https://wiki.jasig.org/display/UPM40/Using+JNDI+managed+DataSources |