AnsweredAssumed Answered

2ème database avec Alfreco 5.2 et Hibernate

Question asked by anakin59490 on Aug 6, 2018
Latest reply on Aug 10, 2018 by anakin59490

Bonjour,

 

J'ai développé un appli alfresco/angular5.

Pour des besoins vraiment spécifiques je dois créer une autre base de données afin de ne pas "polluer" la base de données Alfresco...Create custom Table 

 

J'aimerais donc pour ce faire utiliser des fichiers de config Spring avec Hibernate. Il y a de nombreux tutos...

Mais d'après ce que je trouve sur Internet, Alfresco aurait migré vers Ibatis 

(Alfresco et Hibernate ???? )

Aussi force est de constater qu'il a quand même encore une bibliothèque hibernate dans Tomcat/webapps/alfresco/web-inf/lib : hibernate-3.2.6-alf-20131023.jar

 

J'ai donc commencé par écrire le fichier de config suivant :

 

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:tx="http://www.springframework.org/schema/tx"        xmlns:jpa="http://www.springframework.org/schema/data/jpa"        xsi:schemaLocation="             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">     <tx:annotation-driven transaction-manager="transactionManager" />         <!-- Activate Spring Data JPA repository support      <jpa:repositories base-package="com.klinck.mc.repository" /> -->     <!-- 3) Declare a datasource that has pooling capabilities-->         <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">        <property name="driverClass" value="org.postgresql.Driver" />        <property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/klinck" />        <property name="user" value="postgres" />        <property name="password" value="admin" />        <!--<property name="password" value="#{cipher.decrypt('${jdbc.user.password}')}" /> -->        <!-- C3P0 Pool Properties -->        <property name="initialPoolSize" value="10" />        <property name="acquireIncrement" value="10" />        <property name="minPoolSize" value="10" />        <property name="maxPoolSize" value="200" />        <property name="maxIdleTime" value="3600" />        <property name="maxIdleTimeExcessConnections" value="300" />        <property name="unreturnedConnectionTimeout" value="3600" />        <property name="numHelperThreads" value="6" />        <property name="maxStatements" value="200" />    </bean>     <!-- 2) Declare a JPA entityManagerFactory -->    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">        <property name="packagesToScan" value="com.klinck.mc.bean" />        <!-- <property name="persistenceXmlLocation" value="classpath:META-INF/resources/hibernate/persistence.xml" /> -->        <property name="persistenceUnitName" value="hibernatePersistenceUnit" />        <property name="dataSource" ref="dataSource" />        <property name="jpaVendorAdapter" ref="hibernateVendor" />        <property name="jpaProperties">          <props>              <prop key="hibernate.hbm2ddl.auto">none</prop>             <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>             <prop key="hibernate.show_sql">true</prop>          </props>       </property>    </bean>     <!-- 4) Specify our ORM vendor -->    <bean id="hibernateVendor" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">        <property name="showSql" value="true" />    </bean>     <!-- 1) Declare a transaction manager-->    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">          <property name="entityManagerFactory" ref="entityManagerFactory" />    </bean></beans>

 

En ajoutant les dépendances suivantes dans le POM.xml

 

<dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-jpa</artifactId>        <version>2.0.9.RELEASE</version>    </dependency>     <dependency>        <groupId>org.hibernate.javax.persistence</groupId>        <artifactId>hibernate-jpa-2.1-api</artifactId>        <version>1.0.2.Final</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager  -->    <dependency>       <groupId>org.hibernate</groupId>       <artifactId>hibernate-entitymanager</artifactId>       <version>4.2.4.Final</version>       <scope>runtime</scope>    </dependency>      <!-- https://mvnrepository.com/artifact/org.javassist/javassist -->    <dependency>        <groupId>org.javassist</groupId>        <artifactId>javassist</artifactId>        <version>3.23.1-GA</version>    </dependency>     <!-- meilleure gestion des pools de connexion -->    <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->    <dependency>        <groupId>com.mchange</groupId>        <artifactId>c3p0</artifactId>        <version>0.9.5.2</version>    </dependency>

J'ai ajouté les jars dans le répertoire tomcat/webapps/alfresco/web-inf/lib.

 

J'ai eu une première erreur :

1) "java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties"

J'ai découvert que c'était dû à un problème de compatibilité :

JPA 2.0 & Hibernate 4.0.1 & Spring 3.1.1 Compatibility - Spring Forum 

J'ai donc changé la version d'hibernate (4.2.4-final)

 

2) puis j'ai eu l'erreur suivante :

"java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;"

Or cette méthode fait partie d'un package de la bibliothèque hibernate-core-4.2.4.Final.jar

 

J'en déduis donc qu' Alfresco utilise toujours Hibernate et qu'il y a des problème de conflit entre la version utilisée par alfresco et celle que j'utilise : 4.2.4.Final.jar

 

Comment régler ce problème et ainsi pouvoir créer ma deuxième base de données ?

 

Merci d'avance pour votre aide !! 

 

 

 

 

 

Outcomes