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/contextserver.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"
                            authusername="ContainerUSER" password="PASSWORD"
                    type="javax.sql.DataSource"
            driverClassName="com.mysql.jdbc.Driver" 
            
    						url="jdbc:mysql://localhostdatabase.ip:3306/test" 
    uPortal4"
                            maxActive="100" usernamemaxIdle="root30" maxWait="10000"
                            passwordpoolPreparedStatements="roottrue"
     
                 validationQuery="select 1" 
            removeAbandoned="true"
                            removeAbandonedTimeout="120" 
    300"
                            maxWaitvalidationQuery="60" 
    SELECT 1"
                            maxActivelogAbandoned="20" 
    true"
                   maxIdle="10" />
    </Context>
    Info

    crossContext est nécessaireindispensable au bon fonctionnement du contexte uPortal, 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)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