<?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:config="http://www.anyframejava.org/schema/service"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.anyframejava.org/schema/service http://www.anyframejava.org/schema/service/anyframe-core-service-2.0.xsd">

	<!-- DataSource -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName"
			value="net.sf.log4jdbc.DriverSpy" />
		<property name="url"
			value="jdbc:log4jdbc:oracle:thin:@server.ip:1521:xe" />
		<property name="username" value="athena" />
		<property name="password" value="athena" />
	 </bean>
	 	
	<!-- JobDetailBean -->
	<bean id="jobDetail01"
		class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass"
			value="integration.anyframe.services.scheduling.SimpleQuartzJobBean" />
		<property name="jobDataAsMap">
			<map>
				<entry>
					<key>
						<value>count</value>
					</key>
					<value>6</value>
				</entry>
			</map>
		</property>	
	</bean>
			
	<bean id="jobDetail02"
		class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass"
			value="integration.anyframe.services.scheduling.StatefulQuartzJobBean" />
		<property name="jobDataAsMap">
			<map>
				<entry>
					<key>
						<value>count</value>
					</key>
					<value>6</value>
				</entry>
			</map>
		</property>	
	</bean>
		
	<!-- MethodInvokingJobDetailFactoryBean -->			
	<bean id="jobDetail03"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="simplePOJOJobBean" />
		<property name="targetMethod" value="doSomething" />
	</bean>		

	<bean id="simplePOJOJobBean"
		class="integration.anyframe.services.scheduling.SimplePOJOJobBean" />
	
	<!-- SimpleTriggerBean -->	
	<bean id="simpleTrigger01"
		class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<property name="jobDetail" ref="jobDetail01" />
		<property name="repeatInterval" value="1000" />
		<property name="repeatCount" value="3" />
		<property name="triggerListenerNames" value="triggerListener" />
	</bean>

	<bean id="simpleTrigger02"
		class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<property name="jobDetail" ref="jobDetail02" />
		<property name="repeatInterval" value="1000" />
		<property name="repeatCount" value="3" />
		<property name="triggerListenerNames" value="triggerListener" />
	</bean>
	
	<!-- CronTriggerBean -->			
	<bean id="cronTrigger"
		class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="jobDetail03" />
		<property name="cronExpression" value="2 * * * * ?" />
	</bean>

	<!-- TriggerListener -->
	<bean id="triggerListener"
		class="integration.anyframe.services.scheduling.QuartzTriggerListener" />

	<bean id="globalTriggerListener"
		class="integration.anyframe.services.scheduling.QuartzTriggerListener">
		<property name="listenerType" value="Global" />
	</bean>
			
	<!-- SchedulerFactoryBean -->			
	<bean id="schedulerFactoryBean"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="schedulerName" value="scheduler01"/>
		<property name="triggers">
			<list>
				<ref local="simpleTrigger01" />
				<ref local="simpleTrigger02" />
				<ref local="cronTrigger" />
			</list>
		</property>
		<property name="triggerListeners" ref="triggerListener" />
		<property name="globalTriggerListeners"
			ref="globalTriggerListener" />
		
		<!-- DataSource property setting to store Job and Trigger Data into Database --> 
		<!-- <property name="dataSource" ref="dataSource"/>                          -->
	</bean>
	
	<bean id="schedulerFactoryBeanWithJobSchedulingData"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="schedulerName" value="scheduler02"/>
		<property name="exposeSchedulerInRepository" value="true"/>		
		<property name="jobFactory" ref="jobFactory" />
		<property name="jobSchedulingDataLocation" value="services/scheduling/job-scheduling-data.xml" />
		<property name="globalTriggerListeners" ref="globalTriggerListener" />		
		<property name="taskExecutor" ref="taskExecutor" />
	</bean>	
	
	<!-- SpringBeanJobFactory -->
	<bean id="jobFactory"
		class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>
	
	<!-- SchedulerAccessorBean -->
	<bean id="schedulerAccessorBean" class="org.springframework.scheduling.quartz.SchedulerAccessorBean">
		<property name="scheduler" ref="schedulerFactoryBeanWithJobSchedulingData"/>
	</bean>	

	<!-- TaskExecutor -->	
	<bean id="taskExecutor" class="org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor">
		<property name="threadCount" value="1" />
	</bean>
	 		
</beans>


