Pages enfant
  • JNDI (esup 4)

Vous regardez une version antérieure (v. /wiki/pages/viewpage.action?pageId=260898894) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 17) afficher la version suivante »

JNDI «hybride»

La configuration décrite ci-dessous ne permet pas de faire du JNDI pur. Elle est toutefois plus adaptée car permet de connecter le portail prioritairement à la ressource JNDI et, en cas de non présence de la ressource, permet de se brancher directement sur la ressource JDBC.

 

Le passage de JDBC vers JNDI se fait en modifiant trois fichiers.

  1. Modifier le rdbm.properties :

    uportal-war/src/main/resources/properties/rdbm.properties
    ##### Maven Filtering
    ##### Use these settings to define DB connection settings in filters file: 
    hibernate.connection.jndiname=${environment.build.hibernate.connection.jndiname}
    ##### /filters/{env}.properties
  2. Déclarer la ressource JNDI au niveau du serveur Tomcat :

    <TOMCAT_HOME>/conf/context.xml
    <Context path="/portail" docBase="/opt/webapps/uPortal" reloadable="false" crossContext="true">
        <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>

    crossContext est nécessaire, par exemple pour le partage de session, mais tends à disparaître avec la norme portlet 2.0 (portlet développés sur la norme 1.0 ayant des servlets, permettant par exemple le téléchargement de fichiers)

  3. 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/${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>
    
    
  4. Configurer le fichier esup.properties :

    filters/esup.properties
    environment.build.hibernate.connection.jndiname=jdbc/uPortalDB
  5. Redéployer l'application

  • Aucune étiquette