QuickBuild is pointing to a repository in Stash (Git).
Now this would seem like a Spring / configuration issue, but the issue ONLY happens when using a QuickBuild JAR.
When I build the same project in Linux or Windows with the same Maven version as QuickBuild (3.2.5) this Spring Batch JAR works perfectly.
If I take the QuickBuild JAR (one with NPE), add a blank file to the JAR and resave JAR (on Windows), the newly saved JAR works fine.
How can:
1. Building the JAR from the same Stash repository work in a standalone maven environment (Windows and Linux) but QuickBuild one produces an exception
2. Why would taking the QuickBuild JAR adding a blank file and using that resaved JAR now work?
applicationContext.xml
<bean id="dataSourceElite" factory-bean="serviceLocator" factory-method="getDataSource">
<constructor-arg value="OMDB" />
</bean>
<bean id="dataSource" factory-bean="serviceLocator" factory-method="getDataSource">
<constructor-arg value="SPUIDB" />
</bean>
<bean id="entityManagerFactoryElite" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
</property>
<property name="dataSource" ref="dataSourceElite" />
<property name="persistenceUnitName" value="elite" />
<property name="jpaDialect">
<bean class="com.loyalty.oms.ssui.bo.utils.HibernateExtendedJpaDialect" />
</property>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- Specific properties for Hibernate are in persistence.xml file, but
also can be placed here and removed from persistence.xml file. -->
</bean>
</property>
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="spui" />
<property name="jpaDialect">
<bean class="com.loyalty.oms.ssui.bo.utils.HibernateExtendedJpaDialect" />
</property>
</bean>
<bean id="jpaTemplateElite" class="org.springframework.orm.jpa.JpaTemplate">
<property name="entityManagerFactory" ref="entityManagerFactoryElite" />
</bean>
<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="dataProvider" class="com.loyalty.oms.ssui.dao.GenericDaoJpa" />
<bean id="dataProviderElite" class="com.loyalty.oms.ssui.dao.GenericDaoJpaElite" />
<bean name="transactionManagerElite" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryElite" />
<qualifier value="elite"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManagerElite" />
<bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<qualifier value="spui"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<!--added for Elite (ITEM_W_P) -->
<persistence-unit name="elite" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/persistence-query.xml</mapping-file>
<class><My particular class></class>
<properties>
</properties>
</persistence-unit>
<persistence-unit name="spui" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/persistence-query.xml</mapping-file>
<class><My particular classes></class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
</properties>
</persistence-unit>
</persistence>
Stacktrace:
ERROR 2015-05-20 17:26:32 [ main] CommandLineJobRunner | Job Terminated in error: Error creating bean with name 'entityManagerFactoryElite' defined in class path resource [META-INF/spring/batch/override/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactoryElite' defined in class path resource [META-INF/spring/batch/override/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
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:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:282)
at org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:574)
Caused by: java.lang.NullPointerException
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:135)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1136)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1121)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1233)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:869)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:407)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:257)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 13 more