I think you are on the right track. @EagerLoad on the service builder method (or on the service implementation class if using the ServiceBinder) will generally do the trick.
However, if you have any dependencies, it gets trickier because Tapestry has to fully initialize before some dependencies can be resolved. For the moment, you should use @InjectService to explicitly identify any dependencies. On 5/22/07, David Avenante <[EMAIL PROTECTED]> wrote:
Hi, I try to initialize and start a service when my webapp start. My service is a simple Quartz scheduler with a job. But i've some trouble to start the service. As i can see Tapestry IOC use lazy initialization so my service is build only when used. My code in my Appodule.java is like : // The scheduler public Scheduler buildScheduler() throws SchedulerException { SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.start(); return scheduler; } // Register my service public static void bind(ServiceBinder binder) { binder.bind(IndexScheduler.class, IndexSchedulerImpl.class); } // The trigger public Trigger buildTrigger() { return TriggerUtils.makeMinutelyTrigger(5); } My IndexSchedulerImpl take two contructor's parameters : scheduler and trigger. The probleme is my object is never instanciate if nobody call us (lazy initialization) I reach my goal if i pass my indexscheduler in a method used by tapestry like contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration ... IndexScheduler indexScheduler) and add @EagerLoad to my bind method. But i'm sure there is a more clean practice to reach my goal. Thank's.
-- Howard M. Lewis Ship TWD Consulting, Inc. Independent J2EE / Open-Source Java Consultant Creator and PMC Chair, Apache Tapestry Creator, Apache HiveMind Professional Tapestry training, mentoring, support and project work. http://howardlewisship.com