Re: T5: Quartz and the IoC Registry?

2008-10-12 Thread Angelo Chen

Hi Andy,

Thanks for the code, the HenJob does not have a default constructor, will it
have this error:

[ERROR] ErrorLogger An error occured instantiating job to be executed. job=
'group1.job1'
org.quartz.SchedulerException: Problem instantiating class
'org.sample.myjob'

?


And here's the parent of the above class...all of my quartz jobs are
descendants of this class:

public abstract class HENJob implements Job {

private final Logger _logger;
private final Session _sn;
private final PerthreadManager _perThrdMngr;
private final HibernateSessionManager _hbrntSnMngr;

private JobDataMap _jobDataMap = null;

public HENJob( Logger prmLogger, Session prmSn,
PerthreadManager prmThrdMngr, HibernateSessionManager
prmHbrntSnMngr )  {
_logger = prmLogger;
_sn = prmSn;
_userDAO = prmUserDAO;
_systmPrmtrSrvc = prmSystmPrmtrSrvc;
_perThrdMngr = prmThrdMngr;
_hbrntSnMngr = prmHbrntSnMngr;
}

public void execute(JobExecutionContext arg0) throws
JobExecutionException {
try {
_jobDataMap = arg0.getMergedJobDataMap();

run();

_hbrntSnMngr.commit();
}   finally {
_perThrdMngr.cleanup();
}
}

protected abstract String getSystmPrmtrPrfx();

protected abstract void run();

public JobDataMap getJobDataMap() {
return _jobDataMap;
}

public Logger getLogger() {
return _logger;
}

public Session getSn() {
return _sn;
}

}

Good luck!

Andy

On Sat, 2008-10-11 at 02:40 -0700, Angelo Chen wrote:
 Hi Andy,
 
 Any sample code for this? Thanks.
 
 Angelo
 
 
 Andy Huhn wrote:
  
  Thanks, Howard...ServiceResources did the trick!
  
  On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:
  The Registry is not exposed, a service may be passed its
  ServiceResources via a constructor parameter. This is an extension of
  ServiceLocator, which includes all the key methods of Registry,
  allowing services to be obtained by type or by service id.
  
  In addition, starting in 5.0.7., service proxies are serializable,
  which helps when integrating with Quartz.  You can store a reference
  to a service in a non-transient field of your Job.  I did some Quartz
  integration for a project using the 5.0.5 code, and it required
  jumping through some serious hoops.
  
  In fact, that code code was an example of why I think you are going
  down the wrong path.  I had a JobRunner service that tooks mapped
  contribution of ScheduledJobs; the ScheduledJob was a wrapper around
  some scheduling information and a Runnable object.  Dependencies were
  injected into the contribute method(s) and packaged up as Runnable's
  that are part of the configuration.  The JobRunner was @EagerLoad.
  
  On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:
   All,
  
   I'd like to use Quartz with tapestry.  As such, I'd like to get a
   reference to the Registry and pass it into a Tapestry service (so
 that
  I
   can use it in my Quartz jobs to instantiate all of my DAOs and
  Hibernate
   Sessions).
  
   I saw some discussion here on the list a few days ago about the
   Registry...it sounds like it's not exposed to services at all.  Is
 this
   true?  Does anyone have any ideas how I can get a reference to it?
  
   I have also thought about building a completely new registry inside
  this
   service for all of the quartz jobs to use, but my guess is that there
   would be quite an impact on the machine's resources.  Does anyone
 have
  a
   good feel for how much memory I can expect to give up if I
 instantiate
  a
   second instance of the Registry?
  
   Thanks,
   Andy
  
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
  
  
  
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-- 
View this message in context: 
http://www.nabble.com/T5%3A-Quartz-and-the-IoC-Registry--tp14348106p19939133.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Quartz and the IoC Registry?

2008-10-12 Thread Andy Huhn
Hi Angelo,

It looks like I forgot one piece of info...each descendent of HENJob
should be registered as a service in AppModule, just like your other
services:

  // Jobs that are scheduled by Quartz
  binder.bind( SendMailJob.class, SendMailJobImpl.class );

It is actually the Tapestry IoC framework that instantiates these
services, so Tapestry needs to know about them.

Andy

On Sat, 2008-10-11 at 23:41 -0700, Angelo Chen wrote:
 Hi Andy,
 
 Thanks for the code, the HenJob does not have a default constructor, will it
 have this error:
 
 [ERROR] ErrorLogger An error occured instantiating job to be executed. job=
 'group1.job1'
 org.quartz.SchedulerException: Problem instantiating class
 'org.sample.myjob'
 
 ?
 
 
 And here's the parent of the above class...all of my quartz jobs are
 descendants of this class:
 
 public abstract class HENJob implements Job {
 
 private final Logger _logger;
 private final Session _sn;
 private final PerthreadManager _perThrdMngr;
 private final HibernateSessionManager _hbrntSnMngr;
 
 private JobDataMap _jobDataMap = null;
 
 public HENJob( Logger prmLogger, Session prmSn,
 PerthreadManager prmThrdMngr, HibernateSessionManager
 prmHbrntSnMngr )  {
 _logger = prmLogger;
 _sn = prmSn;
 _userDAO = prmUserDAO;
 _systmPrmtrSrvc = prmSystmPrmtrSrvc;
 _perThrdMngr = prmThrdMngr;
 _hbrntSnMngr = prmHbrntSnMngr;
 }
 
 public void execute(JobExecutionContext arg0) throws
 JobExecutionException {
 try {
 _jobDataMap = arg0.getMergedJobDataMap();
 
 run();
 
 _hbrntSnMngr.commit();
 }   finally {
 _perThrdMngr.cleanup();
 }
 }
 
 protected abstract String getSystmPrmtrPrfx();
 
 protected abstract void run();
 
 public JobDataMap getJobDataMap() {
 return _jobDataMap;
 }
 
 public Logger getLogger() {
 return _logger;
 }
 
 public Session getSn() {
 return _sn;
 }
 
 }
 
 Good luck!
 
 Andy
 
 On Sat, 2008-10-11 at 02:40 -0700, Angelo Chen wrote:
  Hi Andy,
  
  Any sample code for this? Thanks.
  
  Angelo
  
  
  Andy Huhn wrote:
   
   Thanks, Howard...ServiceResources did the trick!
   
   On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:
   The Registry is not exposed, a service may be passed its
   ServiceResources via a constructor parameter. This is an extension of
   ServiceLocator, which includes all the key methods of Registry,
   allowing services to be obtained by type or by service id.
   
   In addition, starting in 5.0.7., service proxies are serializable,
   which helps when integrating with Quartz.  You can store a reference
   to a service in a non-transient field of your Job.  I did some Quartz
   integration for a project using the 5.0.5 code, and it required
   jumping through some serious hoops.
   
   In fact, that code code was an example of why I think you are going
   down the wrong path.  I had a JobRunner service that tooks mapped
   contribution of ScheduledJobs; the ScheduledJob was a wrapper around
   some scheduling information and a Runnable object.  Dependencies were
   injected into the contribute method(s) and packaged up as Runnable's
   that are part of the configuration.  The JobRunner was @EagerLoad.
   
   On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:
All,
   
I'd like to use Quartz with tapestry.  As such, I'd like to get a
reference to the Registry and pass it into a Tapestry service (so
  that
   I
can use it in my Quartz jobs to instantiate all of my DAOs and
   Hibernate
Sessions).
   
I saw some discussion here on the list a few days ago about the
Registry...it sounds like it's not exposed to services at all.  Is
  this
true?  Does anyone have any ideas how I can get a reference to it?
   
I have also thought about building a completely new registry inside
   this
service for all of the quartz jobs to use, but my guess is that there
would be quite an impact on the machine's resources.  Does anyone
  have
   a
good feel for how much memory I can expect to give up if I
  instantiate
   a
second instance of the Registry?
   
Thanks,
Andy
   
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
   
   
   
   
   
   
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
   
   
   
  
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 


-
To unsubscribe, e-mail: [EMAIL 

Re: T5: Quartz and the IoC Registry?

2008-10-11 Thread Angelo Chen

Hi Andy,

Any sample code for this? Thanks.

Angelo


Andy Huhn wrote:
 
 Thanks, Howard...ServiceResources did the trick!
 
 On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:
 The Registry is not exposed, a service may be passed its
 ServiceResources via a constructor parameter. This is an extension of
 ServiceLocator, which includes all the key methods of Registry,
 allowing services to be obtained by type or by service id.
 
 In addition, starting in 5.0.7., service proxies are serializable,
 which helps when integrating with Quartz.  You can store a reference
 to a service in a non-transient field of your Job.  I did some Quartz
 integration for a project using the 5.0.5 code, and it required
 jumping through some serious hoops.
 
 In fact, that code code was an example of why I think you are going
 down the wrong path.  I had a JobRunner service that tooks mapped
 contribution of ScheduledJobs; the ScheduledJob was a wrapper around
 some scheduling information and a Runnable object.  Dependencies were
 injected into the contribute method(s) and packaged up as Runnable's
 that are part of the configuration.  The JobRunner was @EagerLoad.
 
 On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:
  All,
 
  I'd like to use Quartz with tapestry.  As such, I'd like to get a
  reference to the Registry and pass it into a Tapestry service (so that
 I
  can use it in my Quartz jobs to instantiate all of my DAOs and
 Hibernate
  Sessions).
 
  I saw some discussion here on the list a few days ago about the
  Registry...it sounds like it's not exposed to services at all.  Is this
  true?  Does anyone have any ideas how I can get a reference to it?
 
  I have also thought about building a completely new registry inside
 this
  service for all of the quartz jobs to use, but my guess is that there
  would be quite an impact on the machine's resources.  Does anyone have
 a
  good feel for how much memory I can expect to give up if I instantiate
 a
  second instance of the Registry?
 
  Thanks,
  Andy
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-Quartz-and-the-IoC-Registry--tp14348106p19931081.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Quartz and the IoC Registry?

2008-10-11 Thread Andy Huhn
Hi Angelo,

It's been several months since I wrote this, so the details are
fuzzy...but here are some snippets of some code that I'm currently
running in production:

/* The following service is registered with Tapestry IOC.  It schedules
jobs via Quartz */
public class SchedulerServiceImpl implements SchedulerService {

public class TapestryIocJobFactory implements JobFactory  {
ServiceResources _srvcRsrcs;
Logger _logger;

TapestryIocJobFactory( ServiceResources prmSrvcRsrcs, Logger
prmLogger )  {
_srvcRsrcs = prmSrvcRsrcs;
_logger = prmLogger;
}

public Job newJob( TriggerFiredBundle prmTrgrFiredBndl )   {
Class c = prmTrgrFiredBndl.getJobDetail().getJobClass();
return( (Job)_srvcRsrcs.getService( c ) );
}
}

public SchedulerServiceImpl( ServiceResources prmSrvcRsrcs, Logger
prmLogger, SystemParameterService prmSystmPrmtrSrvc )   {

try {
SchedulerFactory schedFact = new
org.quartz.impl.StdSchedulerFactory();

Scheduler sched = schedFact.getScheduler();

sched.setJobFactory( new
TapestryIocJobFactory( prmSrvcRsrcs, prmLogger ) );

sched.start();

/* The first job to be registered: the job that
 * looks for newly-queued messages to send via smtp.
 */
JobDetail jobDetail = new JobDetail(sendMailJob,
null,
SendMailJob.class );

Trigger trigger = TriggerUtils.makeSecondlyTrigger( 10 );
trigger.setStartTime( new Date() );
trigger.setName( sendMailTrigger );

sched.scheduleJob(jobDetail, trigger);

/* The second job to be registered: the job that
 * deletes any pending messages that were never
 * completed.
 */
jobDetail = new JobDetail(cleanPendingMailJob,
null,
CleanPendingMailJob.class );

trigger = TriggerUtils.makeDailyTrigger( 2, 3 );
trigger.setName( cleanPendingMailTrigger );

sched.scheduleJob(jobDetail, trigger);

/* And so one and so forth, registering more jobs. */

} catch (SchedulerException e) {
e.printStackTrace();
}
}
}

The above service is registered in AppModule like this, to force it to load 
when the IOC registry starts up:

binder.bind( SchedulerService.class, SchedulerServiceImpl.class 
).eagerLoad();

Here's an example of one of the jobs registered above:

public class SendMailJobImpl extends HENJob implements SendMailJob {

final private MessageService _msgSrvc;

/**
 * 
 */
public SendMailJobImpl( Logger prmLogger, org.hibernate.Session prmSn,
UserDAO prmUserDAO, MessageService prmMsgSrvc,
SystemParameterService prmSystmPrmtrSrvc,
PerthreadManager prmThrdMngr, 
HibernateSessionManager prmHbrntSnMngr ) {
super( prmLogger, prmSn, prmUserDAO, prmSystmPrmtrSrvc, prmThrdMngr, 
prmHbrntSnMngr );
_msgSrvc = prmMsgSrvc;
}

@Override
public void run() {
/* Code to get a list of emails ready to send, and to send them via 
SMTP. */
}

}

And here's the parent of the above class...all of my quartz jobs are 
descendants of this class:

public abstract class HENJob implements Job {

private final Logger _logger;
private final Session _sn;
private final PerthreadManager _perThrdMngr;
private final HibernateSessionManager _hbrntSnMngr;

private JobDataMap _jobDataMap = null;

public HENJob( Logger prmLogger, Session prmSn,
PerthreadManager prmThrdMngr, HibernateSessionManager 
prmHbrntSnMngr )  {
_logger = prmLogger;
_sn = prmSn;
_userDAO = prmUserDAO;
_systmPrmtrSrvc = prmSystmPrmtrSrvc;
_perThrdMngr = prmThrdMngr;
_hbrntSnMngr = prmHbrntSnMngr;
}

public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
_jobDataMap = arg0.getMergedJobDataMap();

run();

_hbrntSnMngr.commit();
}   finally {
_perThrdMngr.cleanup();
}
}

protected abstract String getSystmPrmtrPrfx();

protected abstract void run();

public JobDataMap getJobDataMap() {
return _jobDataMap;
}

public Logger getLogger() {
return _logger;
}

public Session getSn() {
return _sn;
}

}

Good luck!

Andy

On Sat, 2008-10-11 at 02:40 -0700, Angelo Chen wrote:
 Hi Andy,
 
 Any sample code for this? Thanks.
 
 Angelo
 
 
 Andy Huhn wrote:
  
  Thanks, Howard...ServiceResources did the trick!
  
  On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:
  The 

Re: T5: Quartz and the IoC Registry?

2008-05-02 Thread Michael Lake

Any example of this somewhere?


On Dec 18, 2007, at 8:41 PM, Andy Huhn wrote:


Thanks, Howard...ServiceResources did the trick!

On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:

The Registry is not exposed, a service may be passed its
ServiceResources via a constructor parameter. This is an extension of
ServiceLocator, which includes all the key methods of Registry,
allowing services to be obtained by type or by service id.

In addition, starting in 5.0.7., service proxies are serializable,
which helps when integrating with Quartz.  You can store a reference
to a service in a non-transient field of your Job.  I did some Quartz
integration for a project using the 5.0.5 code, and it required
jumping through some serious hoops.

In fact, that code code was an example of why I think you are going
down the wrong path.  I had a JobRunner service that tooks mapped
contribution of ScheduledJobs; the ScheduledJob was a wrapper around
some scheduling information and a Runnable object.  Dependencies were
injected into the contribute method(s) and packaged up as Runnable's
that are part of the configuration.  The JobRunner was @EagerLoad.

On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:

All,

I'd like to use Quartz with tapestry.  As such, I'd like to get a
reference to the Registry and pass it into a Tapestry service (so  
that I
can use it in my Quartz jobs to instantiate all of my DAOs and  
Hibernate

Sessions).

I saw some discussion here on the list a few days ago about the
Registry...it sounds like it's not exposed to services at all.  Is  
this

true?  Does anyone have any ideas how I can get a reference to it?

I have also thought about building a completely new registry  
inside this
service for all of the quartz jobs to use, but my guess is that  
there
would be quite an impact on the machine's resources.  Does anyone  
have a
good feel for how much memory I can expect to give up if I  
instantiate a

second instance of the Registry?

Thanks,
Andy

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]








-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Quartz and the IoC Registry?

2007-12-18 Thread Andy Huhn
Thanks, Howard...ServiceResources did the trick!

On Sat, 2007-12-15 at 06:53 -0800, Howard Lewis Ship wrote:
 The Registry is not exposed, a service may be passed its
 ServiceResources via a constructor parameter. This is an extension of
 ServiceLocator, which includes all the key methods of Registry,
 allowing services to be obtained by type or by service id.
 
 In addition, starting in 5.0.7., service proxies are serializable,
 which helps when integrating with Quartz.  You can store a reference
 to a service in a non-transient field of your Job.  I did some Quartz
 integration for a project using the 5.0.5 code, and it required
 jumping through some serious hoops.
 
 In fact, that code code was an example of why I think you are going
 down the wrong path.  I had a JobRunner service that tooks mapped
 contribution of ScheduledJobs; the ScheduledJob was a wrapper around
 some scheduling information and a Runnable object.  Dependencies were
 injected into the contribute method(s) and packaged up as Runnable's
 that are part of the configuration.  The JobRunner was @EagerLoad.
 
 On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:
  All,
 
  I'd like to use Quartz with tapestry.  As such, I'd like to get a
  reference to the Registry and pass it into a Tapestry service (so that I
  can use it in my Quartz jobs to instantiate all of my DAOs and Hibernate
  Sessions).
 
  I saw some discussion here on the list a few days ago about the
  Registry...it sounds like it's not exposed to services at all.  Is this
  true?  Does anyone have any ideas how I can get a reference to it?
 
  I have also thought about building a completely new registry inside this
  service for all of the quartz jobs to use, but my guess is that there
  would be quite an impact on the machine's resources.  Does anyone have a
  good feel for how much memory I can expect to give up if I instantiate a
  second instance of the Registry?
 
  Thanks,
  Andy
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: Quartz and the IoC Registry?

2007-12-15 Thread Howard Lewis Ship
The Registry is not exposed, a service may be passed its
ServiceResources via a constructor parameter. This is an extension of
ServiceLocator, which includes all the key methods of Registry,
allowing services to be obtained by type or by service id.

In addition, starting in 5.0.7., service proxies are serializable,
which helps when integrating with Quartz.  You can store a reference
to a service in a non-transient field of your Job.  I did some Quartz
integration for a project using the 5.0.5 code, and it required
jumping through some serious hoops.

In fact, that code code was an example of why I think you are going
down the wrong path.  I had a JobRunner service that tooks mapped
contribution of ScheduledJobs; the ScheduledJob was a wrapper around
some scheduling information and a Runnable object.  Dependencies were
injected into the contribute method(s) and packaged up as Runnable's
that are part of the configuration.  The JobRunner was @EagerLoad.

On Dec 14, 2007 9:22 PM, Andy Huhn [EMAIL PROTECTED] wrote:
 All,

 I'd like to use Quartz with tapestry.  As such, I'd like to get a
 reference to the Registry and pass it into a Tapestry service (so that I
 can use it in my Quartz jobs to instantiate all of my DAOs and Hibernate
 Sessions).

 I saw some discussion here on the list a few days ago about the
 Registry...it sounds like it's not exposed to services at all.  Is this
 true?  Does anyone have any ideas how I can get a reference to it?

 I have also thought about building a completely new registry inside this
 service for all of the quartz jobs to use, but my guess is that there
 would be quite an impact on the machine's resources.  Does anyone have a
 good feel for how much memory I can expect to give up if I instantiate a
 second instance of the Registry?

 Thanks,
 Andy

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]





-- 
Howard M. Lewis Ship
TWD Consulting, Inc.

Creator Apache Tapestry and Apache HiveMind

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]