Le passage de JDBC vers JNDI se fait en modifiant deux fichiers.
Déclarer la ressource JNDI au niveau du serveur Tomcat :
<TOMCAT_HOME>/conf/context.xml<Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/uPortalDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" username="root" password="root" validationQuery="select 1" removeAbandoned="true" removeAbandonedTimeout="120" maxWait="60" maxActive="20" maxIdle="10" /> </Context>Utiliser la ressource dans l'application. Modifier :
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 :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/jdbc/uPortalDB" /> </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>- Redéployer l'application