Hi All,
I am using Spring timer schedule framework for job execution. Below is the code details :
In XML file :
<bean id="schedulerTask" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref="processOrderTimer" />
<property name="targetMethod" value="processOrder" />
</bean>
<bean id="processOrderTimer" class="dk.tdc.kvikoc.app.osm.ProcessOrderTimer" scope="singleton">
<property name="osmBO">
<ref bean="osmBO" />
</property>
</bean>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="timerTask" />
</list>
</property>
</bean>
<bean id="timerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="schedulerTask" />
<property name="delay" value="6000" />
<property name="period" value="600000" />
</bean>
public class ProcessOrderTimer {
public synchronized void processOrder() {
//some lines of code
//...........................
//call to below method involves call to a webservice hosted on other machine
response = osmBO.createOrder(arg);
}
}
Now problem is before call to createOrder (in turn webservices) is finished that is response is received another
thread(probably created by app server where this code is running) invokes this method.
My requirement is untill processOrder() invocation gets completed by one thread another thread must not be able to access it. i have method the synchronized but of no help.
Any pointer how to do this.