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

    Upgrading to AS 5.1 and entity manager factory issue

    reza g Newbie

      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