<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schem...ring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schem...ng-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- Import NCA Batch applicationContext: mandatory to be able to run jobs usin jobLauncher. -->
<import resource="applicationContext.xml" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${DBConnectionFactory.default.driver}" />
<property name="url" value="${DBConnectionFactory.default.url}" />
<property name="username" value="${DBConnectionFactory.default.user}" />
<property name="password" value="${DBConnectionFactory.default.password}" />
</bean>
<bean id="jobRepository"
class="org.springframework.batch.core.repository.s upport.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionManager"
class="org.springframework.batch.support.transacti on.ResourcelessTransactionManager">
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.Pr opertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:${app.home}/cfg/nca.properties</value>
<value>file:${app.home}/cfg/${module.name}/${module.name}.properties
</value>
</list>
</property>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.Hibernat eJpaVendorAdapter">
<property name="showSql" value="${hibernate.show_sql}" />
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.cache.use_second_level_cache" value="${hibernate.cache.use_second_level_cache}" />
<entry key="hibernate.cache.use_query_cache" value="${hibernate.cache.use_query_cache}" />
<entry key="hibernate.cache.provider_class" value="${hibernate.cache.provider_class}" />
<entry key="hibernate.dialect" value="${hibernate.dialect}" />
<entry key="hibernate.show_sql" value="${hibernate.show_sql}" />
<entry key="hibernate.connection.show_sql" value="true" />
<entry key="hibernate.id.new_generator_mappings" value="false" />
</map>
</property>
</bean>
<bean id="jobRegistry"
class="org.springframework.batch.core.configuratio n.support.MapJobRegistry" />
<!-- bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTa skExecutor" /--> <!-- Or ThreadPoolTaskExecutor... -->
<!-- <bean id="taskExecutor" class="org.springframework.core.task.SyncTaskExecu tor" /> -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.C oncurrentTaskExecutor" />
<bean id="jobLauncher" class="com.prosodie.nca.batch.launch.JpaIteratorJo bLauncher">
<property name="jobRepository" ref="jobRepository" />
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="taskExecutor" ref="taskExecutor" />
</bean>
<bean
class="org.springframework.batch.core.configuratio n.support.JobRegistryBeanPostProcessor">
<property name="jobRegistry" ref="jobRegistry" />
</bean>
<bean id="mapJobRepository"
class="org.springframework.batch.core.repository.s upport.MapJobRepositoryFactoryBean"
lazy-init="true" autowire-candidate="false" />
<!-- ************************************************** *** -->
<!-- Notilus project codes export jobDetail definition. -->
<!-- ************************************************** *** -->
<bean id="notilusProjectCodesExportJobDetail"
class="org.springframework.scheduling.quartz.JobDe tailFactoryBean">
<property name="jobClass"
value="com.prosodie.nca.scheduler.JobLauncherDetai ls" />
<property name="group" value="quartz-batch" />
<!-- <property name="concurrentExectionDisallowed" value="true" /> -->
<property name="jobDataAsMap">
<bean class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="jobName" value="batch.export.notilus.project.codes" />
<!-- <entry key="input.jpa.queryString" value="select codeBanque from Emetteur" /> -->
<entry key="maxRetry" value="3" />
<entry key="listenerDelay" value="2000" />
<entry key="alarmManagedByJob" value="false" />
</map>
</constructor-arg>
</bean>
</property>
</bean>
<bean id="notilusProjectCodesExempleNca"
class="org.springframework.scheduling.quartz.JobDe tailFactoryBean">
<property name="jobClass"
value="com.prosodie.nca.scheduler.JobLauncherDetai ls" /> <!-- com.prosodie.nca.scheduler.JobLauncherDetailsExemp le -->
<property name="group" value="quartz-batch" />
<!-- Concurrent
<property name="concurrentExectionDisallowed" value="true" /> -->
<property name="jobDataAsMap">
<bean class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="jobName" value="batch.exemple.projet.nca" />
<!-- <entry key="input.jpa.queryString" value="select codeBanque from Emetteur" /> -->
<entry key="maxRetry" value="3" />
<entry key="listenerDelay" value="2000" />
<!-- The alarmManagedByJob parameter set to false tells the job not to send ExploitAlarms on job failure. -->
<entry key="alarmManagedByJob" value="false" />
</map>
</constructor-arg>
</bean>
</property>
</bean>
<!-- ************************************************** ************* -->
<!-- Declare a job listener that will take care of job retries, etc. -->
<!-- ************************************************** ************* -->
<bean id="ncaJobListener" class="com.prosodie.nca.scheduler.NcaJobListener">
<property name="name" value="nca_job_listener"/>
<meta key="name" value="LISTENER_NAME"/>
</bean>
<bean id="jobListener" class="com.prosodie.nca.scheduler.JobFailureListen er" />
<!-- ************************************************** *** -->
<!-- Here is the Scheduler Factory that will trigger jobs. -->
<!-- ************************************************** *** -->
<bean id="ncaSchedulerFactoryBean" class="org.springframework.scheduling.quartz.Sched ulerFactoryBean">
<property name="schedulerName" value="ncaScheduler" />
<property name="dataSource" ref="dataSource" />
<property name="waitForJobsToCompleteOnShutdown" value="true" />
<property name="overwriteExistingJobs" value="true"/>
<!-- concurrence
<property name="DisallowConcurrentExecution" value="true"> -->
<property name="schedulerContextAsMap">
<map>
<entry key="jobLocator" value-ref="jobRegistry" />
<entry key="jobLauncher" value-ref="jobLauncher" />
</map>
</property>
<property name="triggers">
<list>
<!-- Add a trigger definition for Notilus project codes export job. -->
<bean id="notilusProjectCodesExportCronTrigger"
class="org.springframework.scheduling.quartz.CronT riggerFactoryBean">
<property name="jobDetail" ref="notilusProjectCodesExportJobDetail" />
<!-- <property name="cronExpression" value="0/50 * * * * ?" /> -->
<property name="cronExpression" value="50 * * * * ?" />
<property name="group" value="quartz-batch" />
</bean>
<!-- Add a trigger definition for Notilus project codes exemple job. -->
<bean id="notilusProjectCodesExempleCronTrigger" class="org.springframework.scheduling.quartz.CronT riggerFactoryBean">
<property name="jobDetail" ref="notilusProjectCodesExempleNca" />
<property name="cronExpression" value="30 * * * * ?"/>
<property name="group" value="quartz-batch" />
</bean>
</list>
</property>
<!-- Make the Spring Context Available -->
<!-- <property name="applicationContextSchedulerContextKey" value="schedulerApplicationContext" /> -->
</bean>
</beans>