Hi,

we have an application that is running under Tomcat. We are trying to upgrade 
to latest version 7.0.54 from 7.0.39.
As 7.0.54 lead to some errors, we tried to find out which version broke the 
application. The result is that the issue appears with 7.0.52 and is not 
present until 7.0.50.

The exception that we can see is:
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 
'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'
 defined in file [xyz]: Initialization of bean failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'entityManagerFactory' defined in file [xyz]: Invocation of init 
method failed; nested exception is java.lang.IncompatibleClassChangeError: 
Class org.eclipse.persistence.jpa.PersistenceProvider does not implement the 
requested interface javax.persistence.spi.PersistenceProvider
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at 
org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710)
    at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:410)
    at 
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at 
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at 
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at xyz(xyz1.java:41)
    at xyz (xyz2.java:94)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error 
creating bean with name 'entityManagerFactory' defined in file [xyz]: 
Invocation of init method failed; nested exception is 
java.lang.IncompatibleClassChangeError: Class 
org.eclipse.persistence.jpa.PersistenceProvider does not implement the 
requested interface javax.persistence.spi.PersistenceProvider
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:398)
    at 
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:275)
    at 
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139)
    at 
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:79)
    at 
org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:70)
    at 
org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:99)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1439)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1408)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    ... 15 more
Caused by: java.lang.IncompatibleClassChangeError: Class 
org.eclipse.persistence.jpa.PersistenceProvider does not implement the 
requested interface javax.persistence.spi.PersistenceProvider
    at 
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
    at 
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
    at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
    ... 30 more

and the bean entityManagerFactory is defined like this:

    <bean id="entityManagerFactory" 
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="xyz" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaDialect">
            <bean 
class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect"/>
        </property>
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
        <property name="jpaProperties">
            <props>
                <prop key="eclipselink.ddl-generation">none</prop>
                <prop 
key="eclipselink.ddl-generation.output-mode">database</prop>
                <prop 
key="eclipselink.create-ddl-jdbc-file-name">xyz.sql</prop> 
                <prop key="eclipselink.application-location">c:\temp\</prop>
                <prop key="eclipselink.profiler">NoProfiler</prop>
                <prop key="eclipselink.logging.level">OFF</prop>
                <prop key="eclipselink.jdbc.batch-writing">JDBC</prop>
                <prop key="eclipselink.cache.shared.default">true</prop>
                <prop key="eclipselink.logging.logger">xyz</prop>
                <prop key="javax.persistence.query.timeout">300</prop> 
            </props>
        </property>
    </bean> 


Any clue on this?

Thanks,

Xavier.

Reply via email to