[jboss-user] [Spring Integration] - Need deployment structure for Quartz job with Spring framework on jboss

Rizwan P do-not-reply at jboss.com
Tue May 4 05:14:06 EDT 2010


Rizwan P [http://community.jboss.org/people/RizwanP] created the discussion

"Need deployment structure for Quartz job with Spring framework on jboss"

To view the discussion, visit: http://community.jboss.org/message/540953#540953

--------------------------------------------------------------
Hello,
Currently my requirement is to deploy the Quartz jobs with Spring framework, executed via cron trigger.
I have managed to derive the job, trigger and springContext.xml file for this task. Also, I am getting the desired result as a stand-alone application when executed via a testclient's main method.
Now, i need the help in deploying this on the Jboss server environment and I am stuck as don't want to deploy it as WAR.
Any suggestiion or help is very much appreciated, please help
Below are the code components i have attached for the reference.

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public interface JobInterface {
 public void init(JobExecutionContext jobExecutionContext)
   throws JobExecutionException;
 public void execute() throws JobExecutionException;
 public void destroy();
}

Implementation class :

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class RemoveJob implements JobInterface{
 @Override
 public void destroy() {
  // TODO Auto-generated method stub clearance
  System.out.println("Inside destroy");
 }
 @Override
 public void execute() throws JobExecutionException {
  // TODO Auto-generated method stub  actuall job
  System.out.println("Inside execute");
 }
 @Override
 public void init(JobExecutionContext jobExecutionContext)
   throws JobExecutionException {
  // TODO Auto-generated method stub initialization stuff
  System.out.println("Inside init");
 }
}

Delegator class 

public class DelegatingJobBean extends QuartzJobBean{
 private static final String App_Key = "applicationContext";
 private static final String Job_Key = "job.bean.name";
// /protected org.apache.commons.logging.Log log = LogFactory.getLog(getClass());
 @Override
 protected void executeInternal(JobExecutionContext ctx)
   throws JobExecutionException {
  // TODO Auto-generated method stub
  System.out.println("Inside executeInternal.............");
  SchedulerContext schdContext = null;
  try
  {
   schdContext = ctx.getScheduler().getContext();
   
  }catch(SchedulerException e)
  {
   throw new JobExecutionException("Failure accesssing scheduler context ");
  }
  
  ApplicationContext appContext = (ApplicationContext)schdContext.get(App_Key);
  
  String jobBeanName = (String)ctx.getJobDetail()
        .getJobDataMap().get(Job_Key);
  
  //log.info("Starting Job : " +jobBeanName);
  
  JobInterface jobBean  =(JobInterface)appContext.getBean(jobBeanName);
  
  
  try
  {
   jobBean.init(ctx);
   jobBean.execute();
  }finally
  {
   jobBean.destroy();
  }
  
 }
}
Config File

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans"
 xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
    >
 <!--  This is your job bean
  -->
 <bean id="removeExpireBean"
  autowire="byName" lazy-init="default" dependency-check="default">
  <!--  Ref to other beans. Add more if needed 
  -->
  <!--<property name="serviceLocator">
   <ref bean="serviceLocator" />
  </property>
 --></bean>
 <!--
  Define the bean that delegates the work to the real job bean
 -->
 <bean name="removalJob"
  lazy-init="default" autowire="default" dependency-check="default">
  <property name="jobClass" value="DelegatingJobBean" />
  <property name="jobDataAsMap">
   <map>
    <!--  This specifies the actual job bean name 
  -->
    <entry key="job.bean.name" value="removeExpireBean" />
    <!--  Any other job data map entries required by your job 
  -->
    <entry key="sdtl.file.prefix" value="sdtl_" />
   </map>
  </property>
 </bean>
 <!--  Associate the delegating job bean with a trigger 
  -->
 <bean id="removalTrigger"
  lazy-init="default" autowire="default" dependency-check="default">
  <property name="jobDetail" ref="removalJob" />
  <!--  run every morning at 6:30 AM 
  -->
  <property name="cronExpression" value="0/10 * * * * ?" />
 </bean>
 <!--  Define the scheduler with the list of triggers 
  -->
 <bean
  lazy-init="default" autowire="default" dependency-check="default">
  <property name="triggers">
   <list>
    <ref bean="removalTrigger" />
   </list>
  </property>
  <!--  Scheduler context key we use this in delegating job bean 
  -->
  <property name="applicationContextSchedulerContextKey">
   <value>applicationContext</value>
  </property>
 </bean>
</beans>

Please suggest the deployment structure to be follw to work with this..

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

Reply to this message by going to Community
[http://community.jboss.org/message/540953#540953]

Start a new discussion in Spring Integration at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2082]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100504/00e9da84/attachment.html 


More information about the jboss-user mailing list