You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Jens Deppe <jd...@vmware.com> on 2011/03/05 00:11:37 UTC
NullPointerException from EntityManagerImpl
Hi,
I'm trying to use OpenJPA 2.0.1 with the Spring WebFlow booking sample
app and am having some trouble.
I've set up my data access as follows:
<!-- Drives transactions using local JPA APIs -->
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<!-- Creates a EntityManagerFactory for use with the OpenJPA
provider and a simple in-memory data source populated with test data -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
</property>
<property name="loadTimeWeaver">
<bean
class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/>
</property>
</bean>
Everything seems to work fine until I hit a page which signals the start
of a flow, at which point I get the following exception:
java.lang.NullPointerException
org.apache.openjpa.persistence.EntityManagerImpl.readExternal(EntityManagerImpl.java:1441)
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
org.springframework.webflow.core.collection.LocalAttributeMap.readObject(LocalAttributeMap.java:342)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
org.springframework.webflow.engine.impl.FlowSessionImpl.readExternal(FlowSessionImpl.java:147)
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
java.util.LinkedList.readObject(LinkedList.java:964)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
org.springframework.webflow.engine.impl.FlowExecutionImpl.readExternal(FlowExecutionImpl.java:305)
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.deserialize(SerializedFlowExecutionSnapshot.java:194)
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.unmarshal(SerializedFlowExecutionSnapshot.java:99)
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.restoreExecution(SerializedFlowExecutionSnapshotFactory.java:80)
org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.restoreFlowExecution(AbstractSnapshottingFlowExecutionRepository.java:89)
org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution(DefaultFlowExecutionRepository.java:112)
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168)
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.gemstone.gemfire.modules.session.filter.ServletWrapper.service(ServletWrapper.java:72)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.gemstone.gemfire.modules.session.filter.SessionCachingFilter.doFilter(SessionCachingFilter.java:434)
Doing some debugging, I can see that the factoryKey
(EntityManagerImpl.java:1437) being deserialized is null. That's because
it was written as null (line 1464):
Object factoryKey = ((AbstractBrokerFactory) _broker
.getBrokerFactory()).getPoolKey();
Here getPoolKey() returns null.
So is this a bug, or should I be configuring something else/differently
to get this to work?
TIA.
--Jens
Re: NullPointerException from EntityManagerImpl
Posted by Rick Curtis <cu...@gmail.com>.
I'm not sure why spring is serializing EntityManagers... regardless this is
definitely a bug. I'm guessing you're in the tire kicking phase so if you
continue using OpenJPA you should read some info on Entity enhancement[1].
Using this property [2] in your persistence.xml is not recommend.
[1] http://openjpa.apache.org/entity-enhancement.html
[2] <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/>
Thanks,
Rick
On Fri, Mar 4, 2011 at 5:11 PM, Jens Deppe <jd...@vmware.com> wrote:
> Hi,
>
> I'm trying to use OpenJPA 2.0.1 with the Spring WebFlow booking sample app
> and am having some trouble.
>
> I've set up my data access as follows:
>
> <!-- Drives transactions using local JPA APIs -->
> <bean id="transactionManager"
> class="org.springframework.orm.jpa.JpaTransactionManager">
> <property name="entityManagerFactory"
> ref="entityManagerFactory" />
> </bean>
>
> <!-- Creates a EntityManagerFactory for use with the OpenJPA
> provider and a simple in-memory data source populated with test data -->
> <bean id="entityManagerFactory"
> class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
> <property name="dataSource" ref="dataSource" />
> <property name="jpaVendorAdapter">
> <bean
> class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" />
> </property>
> <property name="loadTimeWeaver">
> <bean
> class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/>
> </property>
> </bean>
>
> Everything seems to work fine until I hit a page which signals the start of
> a flow, at which point I get the following exception:
>
> java.lang.NullPointerException
>
> org.apache.openjpa.persistence.EntityManagerImpl.readExternal(EntityManagerImpl.java:1441)
>
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
>
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
>
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
>
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
>
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>
> org.springframework.webflow.core.collection.LocalAttributeMap.readObject(LocalAttributeMap.java:342)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
>
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>
> org.springframework.webflow.engine.impl.FlowSessionImpl.readExternal(FlowSessionImpl.java:147)
>
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
> java.util.LinkedList.readObject(LinkedList.java:964)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:597)
>
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>
> org.springframework.webflow.engine.impl.FlowExecutionImpl.readExternal(FlowExecutionImpl.java:305)
>
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)
>
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
>
> org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.deserialize(SerializedFlowExecutionSnapshot.java:194)
>
> org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.unmarshal(SerializedFlowExecutionSnapshot.java:99)
>
> org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.restoreExecution(SerializedFlowExecutionSnapshotFactory.java:80)
>
> org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.restoreFlowExecution(AbstractSnapshottingFlowExecutionRepository.java:89)
>
> org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.getFlowExecution(DefaultFlowExecutionRepository.java:112)
>
> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168)
>
> org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
>
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
>
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
>
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
> com.gemstone.gemfire.modules.session.filter.ServletWrapper.service(ServletWrapper.java:72)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
>
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
>
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
>
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
>
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
>
> org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
>
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>
> com.gemstone.gemfire.modules.session.filter.SessionCachingFilter.doFilter(SessionCachingFilter.java:434)
>
>
> Doing some debugging, I can see that the factoryKey
> (EntityManagerImpl.java:1437) being deserialized is null. That's because it
> was written as null (line 1464):
>
> Object factoryKey = ((AbstractBrokerFactory) _broker
> .getBrokerFactory()).getPoolKey();
>
> Here getPoolKey() returns null.
>
> So is this a bug, or should I be configuring something else/differently to
> get this to work?
>
> TIA.
>
> --Jens
>