Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JPA - LoadTimeWeaver IllegalStateException

596262Sep 7 2007 — edited Sep 14 2007
When deploying my application, I get the following exception:

[SSOAdmin] ERROR | Context initialization failed | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07
12:46:44,401 org.springframework.web.struts.ContextLoaderPlugIn:229
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in
ServletContext resource [WEB-INF/spring-beans.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot apply class transformer without LoadTimeWeaver specified
Caused by:
java.lang.IllegalStateException: Cannot apply class transformer without LoadTimeWeaver specified
at org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.addTransformer(SpringPersistenceUnitInfo.java:67)
at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:155)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:218)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:251)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1201)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:247)
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:257)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:122)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:78)
at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:70)
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:96)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1162)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:733)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:496)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:337)
at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:354)
at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:295)
at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:225)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:874)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:341)
at javax.servlet.GenericServlet.init(GenericServlet.java:256)
at com.evermind.server.http.HttpApplication.loadServlet(HttpApplication.java:2361)
at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4810)
at com.evermind.server.http.HttpApplication.findServlet(HttpApplication.java:4734)
at com.evermind.server.http.HttpApplication.initPreloadServlets(HttpApplication.java:4922)
at com.evermind.server.http.HttpApplication.initDynamic(HttpApplication.java:1134)
at com.evermind.server.http.HttpApplication.<init>(HttpApplication.java:738)
at com.evermind.server.ApplicationStateRunning.getHttpApplication(ApplicationStateRunning.java:414)
at com.evermind.server.Application.getHttpApplication(Application.java:571)
at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.createHttpApplicationFromReference(HttpSite.java:1990)
at com.evermind.server.http.HttpSite$HttpApplicationRunTimeReference.<init>(HttpSite.java:1909)
at com.evermind.server.http.HttpSite.addHttpApplication(HttpSite.java:1606)
at oracle.oc4j.admin.internal.WebApplicationBinder.bindWebApp(WebApplicationBinder.java:238)
at oracle.oc4j.admin.internal.WebApplicationBinder.bindWebApp(WebApplicationBinder.java:99)
at oracle.oc4j.admin.internal.ApplicationDeployer.bindWebApp(ApplicationDeployer.java:547)
at oracle.oc4j.admin.internal.ApplicationDeployer.doDeploy(ApplicationDeployer.java:202)
at oracle.oc4j.admin.internal.DeployerBase.execute(DeployerBase.java:93)
at oracle.oc4j.admin.jmx.server.mbeans.deploy.OC4JDeployerRunnable.doRun(OC4JDeployerRunnable.java:52)
at oracle.oc4j.admin.jmx.server.mbeans.deploy.DeployerRunnable.run(DeployerRunnable.java:81)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:298)
at java.lang.Thread.run(Thread.java:595)

In the debug statements just before this exception, I see:

[SSOAdmin] DEBUG | Applying DestructionAwareBeanPostProcessors to bean with name 'persistenceUnitManager' | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:44,401 org.springframework.beans.factory.support.DisposableBeanAdapter:132
[SSOAdmin] DEBUG | Retrieved dependent beans for bean 'loadTimeWeaver': [entityManagerFactory] | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:44,401 org.springframework.beans.factory.support.DefaultListableBeanFactory:337
[SSOAdmin] DEBUG | Applying DestructionAwareBeanPostProcessors to bean with name 'loadTimeWeaver' | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:44,401 org.springframework.beans.factory.support.DisposableBeanAdapter:132
[SSOAdmin] DEBUG | Retrieved dependent beans for bean 'vendorAdapter': [entityManagerFactory] | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:44,401 org.springframework.beans.factory.support.DefaultListableBeanFactory:337
[SSOAdmin] DEBUG | Applying DestructionAwareBeanPostProcessors to bean with name 'vendorAdapter' | 6750 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:44,401 org.springframework.beans.factory.support.DisposableBeanAdapter:132

and it seems the loadTimeWeaver is created earlier in the debug statements by this:

[SSOAdmin] DEBUG | Eagerly caching bean 'loadTimeWeaver' to allow for resolving potential circular references | 1703 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:39,354 org.springframework.beans.factory.support.DefaultListableBeanFactory:393
[SSOAdmin] INFO | Bean 'loadTimeWeaver' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | 1719 [DeployerRunnable Thread for ACRSP2] 2007-09-07 12:46:39,370 org.springframework.web.context.support.XmlWebApplicationContext:1006

Here's the relevant context:

OC4J 10.1.3.2
Spring 2.0.6
Toplink Essentials

spring-beans.xml excerpt
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="ACRSUnit"/>
<property name="jpaVendorAdapter" ref="vendorAdapter"/>
<property name="loadTimeWeaver" ref="loadTimeWeaver"/>
<property name="persistenceUnitManager" ref="persistenceUnitManager" />
</bean>

<bean id="loadTimeWeaver" class="org.springframework.instrument.classloading.oc4j.OC4JLoadTimeWeaver"/>
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/acrs-persistence.xml</value>
</list>
</property>
</bean>

<bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter">
<property name="databasePlatform" value="oracle.toplink.essentials.platform.database.oracle.OraclePlatform" />
<property name="showSql" value="true"/>
</bean>

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<tx:annotation-driven transaction-manager="txManager"/>

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>


persistence.xml excerpt
<persistence-unit name="ACRSUnit" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<properties>
<property name="toplink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ODSD"/>
<property name="toplink.jdbc.user" value="xxx"/>
<property name="toplink.jdbc.password" value="xxx"/>
<property name="toplink.server.platform.class.name" value="toplink.JavaLoggerServerPlatform"/>
<property name="toplink.logging.level" value="FINEST"/>
<property name="toplink.logging.exceptions" value="true"/>
<property name="toplink.weaving" value="true"/>
<property name="toplink.weaving.lazy" value="true"/>
<property name="toplink.weaving.changetracking" value="true"/>
</properties>
</persistence-unit>

If I make a change to remove the loadTimeWeaver from the spring-beans.xml context and set the toplink.weaving to false in the persistence.xml, I get an infinite loop on deploy. So that is not an option. Any ideas why I am getting the above excpetion? If you need more information, please let me know.

Thanks!

Message was edited by:
kcjavaman
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 12 2007
Added on Sep 7 2007
4 comments
8,715 views