Projet Socle ENT
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

...

Le passage de JDBC vers JNDI se fait en modifiant trois 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
      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
      <GlobalNamingResources>
        <!-- Editable user database that can also be used by<Context path="/portail" docBase="/opt/webapps/uPortal" reloadable="false" crossContext="true" >
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabasejdbc/uPortalDB" auth="Container" type="javax.sql.DataSource"
                  type="org.apache.catalina.UserDatabase"
              username="USER" password="PASSWORD"
       description="User database that can be updated and saved"
                  factorydriverClassName="orgcom.apachemysql.catalinajdbc.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />Driver"
    						url="jdbc:mysql://database.ip:3306/uPortal4"
                  
        <Resource name="jdbc/uPortalDB" 
            authmaxActive="100" maxIdle="Container30" 
            type="javax.sql.DataSourcemaxWait="10000"
            driverClassName="org.postgresql.Driver" 
            url="jdbc:postgresql://localhost:5432/postgres" 
            usernamepoolPreparedStatements="A141474true" 
            password="" 
            validationQuery="select 1" 
            removeAbandoned="true"
            removeAbandonedTimeout="120" 
            maxWait="60" 
            maxActiveremoveAbandonedTimeout="20300"
     
             maxIdle="10" />
            
      </GlobalNamingResources>
    Info

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

    Ajouter un lien vers la ressource dans la pplication uPortal :

    Bloc de code
    titleesup-uportal-master\uportal-war\src\main\webapp\META-INF\context.xml
    linenumberstrue
    <Context crossContext="true" useHttpOnly="true" disableURLRewritingvalidationQuery="true"SELECT reloadable=1"false">
        <Manager pathname="" className="org.apache.catalina.session.StandardManager"/>
         <ResourceLink global="jdbc/uPortalDB"
                    namelogAbandoned="jdbc/uPortalDBtrue"
                    type="javax.sql.DataSource"/>
    </Context>/>
    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