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. 21) 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 "jdbc/uPortalDB" au niveau du serveur Tomcat :

    <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
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />
                  
        <Resource name="jdbc/uPortalDB" 
            auth="Container" 
            type="javax.sql.DataSource"
            driverClassName="org.postgresql.Driver" 
            url="jdbc:postgresql://localhost:5432/postgres" 
            username="A141474" 
            password="" 
            validationQuery="select 1" 
            removeAbandoned="true"
            removeAbandonedTimeout="120" 
            maxWait="60" 
            maxActive="20" 
            maxIdle="10" />
            
      </GlobalNamingResources>

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

  3. Ajouter un lien vers la ressource dans la pplication uPortal :

    esup-uportal-master\uportal-war\src\main\webapp\META-INF\context.xml
    <Context crossContext="true" useHttpOnly="true" disableURLRewriting="true" reloadable="false">
        <Manager pathname="" className="org.apache.catalina.session.StandardManager"/>
         <ResourceLink global="jdbc/uPortalDB"
                    name="jdbc/uPortalDB"
                    type="javax.sql.DataSource"/>
    </Context>
  4. 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>
    
    
  5. Configurer le fichier esup.properties :

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

  • Aucune étiquette