I do not have startup problems and use these properties to disable job by 
default and only start then on the designed instance:

er.quartzscheduler.schedulerServiceToLaunch=true
er.quartzscheduler.triggersAutomaticallyPaused=true

On the instance that should run the tasks I set  
er.quartzscheduler.triggersAutomaticallyPaused=false

This cause Quartz to load but no task are started, The is a component in the 
frameworks to see the current scheduling state and individual task schedule at 
runtime you can put in your app: <wo:ERQSJobInformations/>.

Havi you implemented a ERQSSchedulerServiceFrameworkPrincipal derived class as 
explained in the readme file and call the initializer as described in the 
readme ?

* Create your own framework principal and implement the methods: * 
* 
getListOfJobDescription that is called by the job supervisor to know the list 
of jobs that must be handled by the Quartz scheduler. * 
newEditingContext() called when a job needs a new ec * 
newEditingContext(final EOObjectStore parent) called when a job needs a new ec 
* 
* Read more {@link 
er.quartzscheduler.util.ERQSSchedulerServiceFrameworkPrincipal#newEditingContext()}
 * * 

Here is my code for that. ScheduledJob is my EOEntity use to store task 
schedule.

In Application.java...

        @Override
        public void didFinishLaunching() {
                super.didFinishLaunching();
        new SchedulerPrincipal().finishInitialization();
        }

public class SchedulerPrincipal extends ERQSSchedulerServiceFrameworkPrincipal {
        
        EOEditingContext ec = null;
        NSArray<? extends ERQSJobDescription> jobs = null;
        
        static 
        {
           setUpFrameworkPrincipalClass(SchedulerPrincipal.class);
        }
        
        @Override
        public void finishInitialization() {
                super.finishInitialization();
                ERQSSchedulerServiceFrameworkPrincipal.setSharedInstance(this);
        }
        
        @Override
        protected void initialize() {
                super.initialize();
        }
        
        @Override
        public NSArray<? extends ERQSJobDescription> 
getListOfJobDescription(EOEditingContext ec) {
                this.ec = ec;
                jobs = ScheduledJob.fetchAllScheduledJobs(ec);
                return jobs; 
        }

        @Override
        public EOEditingContext newEditingContext() {
                return ERXEC.newEditingContext(); //?
        }

        @Override
        public EOEditingContext newEditingContext(EOObjectStore parent) {
                return ERXEC.newEditingContext(parent); //?
        }

}

Samuel



> Le 15 févr. 2025 à 23:55, Jesse Tayler <jtay...@oeinc.com> a écrit :
> 
> Thanks, I seem to have found that by initializing Quartz in my Applicaiton 
> main(), very early even — I have it working but I GET TWO EMAILS! I have two 
> instances and they both send the same notifications. Grrr...
> 
> I was sure I read code that was locking the Database and I figured a date or 
> something was being used to prevent that in a cluster? 
> 
> I also notice that I do NOT seem to have control over properties? Such as 
> turning it on/off 
> 
> er.quartzscheduler.schedulerServiceToLaunch=true
> 
> Vs false seems to have no effect.
> 
> I have to spark Quartz up by hand, in my main() and that’s odd — 
> 
> Something is afoot!
> 
> 
> 
>> On Feb 15, 2025, at 11:43 PM, Samuel Pelletier <sam...@samkar.com> wrote:
>> 
>> Hi Jesse,
>> 
>> I would try to set the main log level to debug and look at the entries... 
>> There is maybe some hints there.
>> 
>> In WOApplication, the code will print uncatched exception to stderr, make 
>> sure you capture this output.
>> /*  556 */                 NSLog.err.appendln((Object)("A fatal exception 
>> occurred: " + throwable.getMessage()));
>> 
>> It appears like this in debug console when I trigger an IllegalAccessError 
>> in a framework didFinishInitialization() handler.
>> févr. 15 23:27:43 AppName[2325] WARN  NSLog  - A fatal exception occurred: 
>> java.lang.IllegalAccessError
>> Exception stock trace printed here
>> 
>> I have no idea where these 2 lines come from:
>>> Terminating Session Instance
>>> New Session Instance
>> 
>> Hope this can help.
>> 
>> Regards,
>> 
>> Samuel
>> 
>> 
>>> Le 14 févr. 2025 à 18:00, Jesse Tayler <jtay...@oeinc.com> a écrit :
>>> 
>>> I have the scheduler working but somehow on production, (which is in a 
>>> container) it simply craps out seemingly right around the time Quartz rolls 
>>> in.
>>> 
>>> So the app starts up and connects to RDBMS as normal. 
>>> 
>>> A few seconds in, around the time I would expect Quartz to load up and 
>>> query- it dies.
>>> 
>>> But there’s no error, it seems like the app was asked to shut down?
>>> 
>>> A watchdog?
>>> 
>>> Too much RAM? 
>>> 
>>> Feb 14 17:10:07 TruAnon[2002] DEBUG NSLog  - 0 row(s) processed
>>> Feb 14 17:10:07 TruAnon[2002] DEBUG NSLog  -  === Commit Internal 
>>> Transaction
>>> Terminating Session Instance
>>> New Session Instance
>>> APPLICATION SHUTDOWN SEQUENCE COMPLETE
>>> 
>>> Boom
>>> 
>>> It’s dead and gone.
>>> 
>>> Any idea how a WO app can gracefully die like that without any error?
>>> 
>>> 
>> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to