Pages enfant
  • JNDI (esup 4)

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 plusieurs 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

     

    Déclarer la ressource JNDI "jdbc/uPortalDB" au niveau du serveur Tomcat :

    <TOMCAT_HOME>/conf/server.xml
      <Context path="/portail" docBase="/opt/webapps/uPortal" reloadable="false" crossContext="true" >
                    <Resource name="jdbc/uPortalDB" auth="Container" type="javax.sql.DataSource"
                            username="USER" password="PASSWORD"
                            driverClassName="com.mysql.jdbc.Driver"
    						url="jdbc:mysql://database.ip:3306/uPortal4"
                            maxActive="100" maxIdle="30" maxWait="10000"
                            poolPreparedStatements="true"
                            removeAbandoned="true"
                            removeAbandonedTimeout="300"
                            validationQuery="SELECT 1"
                            logAbandoned="true"
                    />

    crossContext est indispensable au bon fonctionnement du contexte uPortal, par exemple pour le partage de session ou pour Pluto.

     

     

  2. 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>
    
    
  3. Configurer le fichier esup.properties :

    filters/esup.properties
    environment.build.hibernate.connection.jndiname=jdbc/uPortalDB
  4. 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)
  5. Redéployer l'application

  • Aucune étiquette