Hi,

I have a multithreaded clustered application deployed on weblogic where I am using spring 2.5 scheduling. I have configured the job configuration in such a way that 2 jobs will be launched after a preconfigured scheduling interval using triggers. The spring configuration entries are given below -

<bean id="evaluatorJobTriggerFactory"
class="org.springframework.beans.factory.config.Ob jectFactoryCreatingFactoryBean">
<property name="targetBeanName">
<idref local="evaluatorJobTrigger" />
</property>
</bean>

<bean id="evaluatorJobTrigger" class="org.springframework.scheduling.quartz.Simpl eTriggerBean"
scope="prototype">
<property name="group" value="evaluatorJob" />
<property name="description"
value="Quartz Job Trigger For Subscription Evaluator Poller" />
<property name="repeatInterval" value="${poller.evaluator.repeat.interval}" />
</bean>

<bean id="evaluatorJob" class="org.springframework.scheduling.quartz.JobDe tailBean"
scope="prototype">
<property name="jobClass"
value="com.test.poller.SubscriptionEvaluatorPoller " />
<property name="jobDataAsMap">
<map>
<entry key="dataSource" value-ref="dataSource" />
<entry key="txTemplate" value-ref="txTemplate" />
</map>
</property>
<property name="volatility" value="false" />
<property name="durability" value="false" />
<property name="requestsRecovery" value="true" />
</bean>


<bean id="dataSource" class="com.test.jndi.JndiDataSource">
<property name="environment">
<props>
<prop key="java.naming.provider.url">${weblogic.naming.u rl}</prop>
<prop key="java.naming.factory.initial">${weblogic.initi al.factory}</prop>
</props>
</property>
<property name="jndiName">
<value>${jndi.name.datasource}</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSou rceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="txTemplate" class="org.springframework.transaction.support.Tra nsactionTemplate">
<property name="transactionManager" ref="txManager"/>
</bean>

-----------------------------------------------------------------

Within the code, I am using "TransactionTemplate" to define a transaction as shown below -

List eventList = null;

eventList = (List) template.execute(new TransactionCallback()
{
public Object doInTransaction(
TransactionStatus transactionStatus)
{
List eventList = DAO.GETDATA(); // it uses JdbcTemplate.execute()
if (eventList != null && !eventList.isEmpty())
{
// update to intermediate status in VISIBILITY_EVENT
DAO.UPDATEDATE(eventList); //it used JdbcTemplate.batchUpdate()
}
return eventList;
}
});


----------------------------------------------------------------

Since this is a clustered environment, would a transaction created by one thread on one server in cluster be honoured by the threads running on other machines in the cluster?
Is there any other way to ensure transaction management in a clustered environment? The database is Oracle 10g and application server is Weblogic 8.1

Regards,
Jacob