Pages enfant
  • JNDI (esup 4)

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3
Astuce
titleJNDI «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 :

    Bloc de code
    titleuportal-war/src/main/resources/properties/rdbm.properties
    firstline24
    linenumberstrue
    ##### 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 :

    Bloc de code
    languagehtml/xml
    title<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"
                    />
    Info

    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 :

    Bloc de code
    languagehtml/xml
    titleuportal-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
    languagehtml/xml
    titleuportal-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 :

    Bloc de code
    titlefilters/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

Info
titleRéférences

https://wiki.jasig.org/display/UPM40/Using+JNDI+managed+DataSources
Exemple de fichier de configuration