2 Replies Latest reply on Jan 13, 2011 6:34 PM by rezaghp

    Upgrading to AS 5.1 and entity manager factory issue

    rezaghp

      Hi,

       

      We are upgrading to JBoss AS 5.1 from 4.x and having issue with entity manager factory not bound.

       

      When Spring starts up we need to initialize a class (CacheInit) which requires the persistence unit but apparently at that time it is not still bound. This is a back-end application that starts spring with beanRefContext.xml. We get:

       

      Caused by: org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [classpath*:beanRefContext.xml], factory key [null]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'factoryKey' defined in URL [vfszip:/D:/dev/jboss-server/jboss-5.1.0.GA-jdk6/jboss-5.1.0.GA/server/default/deploy/Services-ProductCatalogue.ear/Services-ProductCatalogue.jar/beanRefContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.context.support.ClassPathXmlApplicationContext]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ppc': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: persistence-ppc not bound

                at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:389)

                at com....SpringInitialisationServiceImpl.create(SpringInitialisationServiceImpl.java:25)

                ... 66 more

      Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'factoryKey' defined in URL [vfszip:/D:/dev/jboss-server/jboss-5.1.0.GA-jdk6/jboss-5.1.0.GA/server/default/deploy/Services-ProductCatalogue.ear/Services-ProductCatalogue.jar/beanRefContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.context.support.ClassPathXmlApplicationContext]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ppc': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: persistence-ppc not bound

                at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:281)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:888)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)

                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)

                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

                at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)

                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)

                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)

                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)

                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)

                at org.springframework.context.access.ContextSingletonBeanFactoryLocator.initializeDefinition(ContextSingletonBeanFactoryLocator.java:143)

                at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:384)

                ... 67 more

      Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.context.support.ClassPathXmlApplicationContext]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ppc': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: persistence-ppc not bound

                at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141)

                at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:107)

                at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:273)

                ... 80 more

      Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ppc': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: persistence-ppc not bound

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)

                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)

                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

                at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)

                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)

                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)

                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)

                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)

                at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)

                at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)

                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

                at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)

                ... 82 more

      Caused by: javax.naming.NameNotFoundException: persistence-ppc not bound

                at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)

                at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)

                at org.jnp.server.NamingServer.getObject(NamingServer.java:785)

                at org.jnp.server.NamingServer.lookup(NamingServer.java:443)

                at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)

                at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)

                at javax.naming.InitialContext.lookup(InitialContext.java:392)

                at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154)

                at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)

                at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)

                at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)

                at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)

                at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)

                at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201)

                at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)

                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)

                ... 98 more

       

       

      This is what we have:

       

      persistence.xml:

       

      <persistence-unit name="ppc" transaction-type="JTA">

      <provider>org.hibernate.ejb.HibernatePersistence</provider>

      <jta-data-source>java:/ppc</jta-data-source>

      <property name="jboss.entity.manager.factory.jndi.name" value="java:/persistence-ppc" />

       

       

       

      spring-jpa-config.xml:

       

      <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />

      <jee:jndi-lookup id="ppc" jndi-name="java:/persistence-ppc"/>

       

      spring-config.xml:

       

       

      <bean id="cacheInit" class="CacheInit" init-method="init">

       

       

      CacheInit:

       

       

      @Transactional

      public class CacheStarter {

            @PersistenceContext(unitName="ppc")

            private EntityManager entityManager;

       

       

      Anyone got an idea?

       

      Thanks

      Rez