Re: T5: Quartz and the IoC Registry?
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]
t5: using jetty
Hi, Sorry if this is not related to Tapestry. I use jetty:run to test my web app and it works well, one issue that I can't solve is, in the standard tomcat deployment my app has to refer to webapps/myimages, myimages is actually a linked directory in Linux, how to define something like this when using jetty:run? Thanks, -- View this message in context: http://www.nabble.com/t5%3A-using-jetty-tp19938977p19938977.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]
T5: Cannot decorate services coming from tapestry-spring
I have defined a service decorator and used @Match("*Support"). Services that I define in my appmodule with class names ending in Support get decorated just fine. However I have several services which end in Support that are coming in from spring via tapestry-spring. My decorator doesn't seem to be getting applied. Thoughts? Bill -- Without code, you have no product Without testing, no quality Without refactoring, no future - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [T5] What is your missing feature / bloking bug before 5.0 ?
Em Sat, 11 Oct 2008 12:32:53 -0300, Tobias Wehrum <[EMAIL PROTECTED]> escreveu: Hi Thiago, Hi! You don't need to use the list binding. Just use the prop binding: [...] building the context in the java class seems somewhat cumbersomely to me, and also a bit confusing, since you cannot directly see what context the PageLink gets and have to lookup the method in the corresponding java method. Are there any advantages I don't see? The advantage is that the activation context can be dynamic, being generated in any way you like. I know, since I opened a few myself. It just seemed that Joel Halbert knows what he talks about, in contrast to me just thinking "having any sort of named context parameters (though I don't know how they would look like?) would be great" - which doesn't qualify as a text for a JIRA issue, I hope. :) As long as you explain what named context parameters are and why would you want them, I think it qualifies. :) -- Thiago H. de Paula Figueiredo Independent Java consultant, developer, and instructor Consultor, desenvolvedor e instrutor em Java http://www.arsmachina.com.br/thiago - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
AW: [T5] What is your missing feature / bloking bug before 5.0 ?
As I have to support german localization and IE, I think 1) and 2) is a must have for 5.0 3) would be great, but is not a must have for 5.0 I think I also think Geoff is right with is argument: "ApplicationStateObject is a misleading term" https://issues.apache.org/jira/browse/TAPESTRY-2703 and this is the last change to fix it - and it should be fixed! And not to forget: T5 really rocks! best regards, Max -Ursprüngliche Nachricht- Von: Francois Armand [mailto:[EMAIL PROTECTED] Gesendet: Fr 10.10.2008 10:56 An: Tapestry users Betreff: [T5] What is your missing feature / bloking bug before 5.0 ? Ok, so we reach the point where T5.0 final is imminent, and we are all (I think) really happy of that. As we also want that T5 really makes its way in the Java Web ecosystem, I think it always miss some really little things that are really important for a .0 release. I purpose to start this discussion in the ml, and when some major gap emerge, to post them in the issue tracker, and vote for them. So, for me, what I expect for 5.0 : 1/ - full and complete and rather simple internationalization : I really believe that a web framework can ignore other language and culture (date, number) today ; that include validator translation and stuff like that. 2/ - valid XHTML, even for IE, by default. The workaround is here for some time, but why it's not default ? See http://wiki.apache.org/tapestry/Tapestry5HowToXhtml 3/ - something around AJAX documentation and Zone update inside a form (that includes update of part of a form on change from a select : https://issues.apache.org/jira/browse/TAP5-138) 4/- a property symbol provider, also simple and in use almost always @see http://wiki.apache.org/tapestry/Tapestry5HowToReadSymbolsFromPropertiesFile Without 1, T5 just can't get is path easely outside English contries ; Without 2, T5 can hardly be considered top-level (even if on the technical point of vue, it's completly rigth and it's IE fault), without 3, AJAX seems not so well integrated, and it's hot stuff todays, and 4 is so much common in a application, why do we have to bother with that each time ? Other simple stuff that should be corrected before 5.0 (in my opinion) : - why hidden field is still missing ? It's so easy to add, a new user should not even have to search for that ! - https://issues.apache.org/jira/browse/TAP5-257, that seems to bring other pb with decorator and the like ; What do you thing about that ? Does it make sense to open a "community want that" bug, that have to be quick to handle, but that brings the attention of T5 developers on what we need ? Perhaps we can already vote for existing bugs ? Which ones ? -- Francois Armand Etudes & Développements J2EE Groupe Linagora - http://www.linagora.com Tél.: +33 (0)1 58 18 68 28 --- InterLDAP - http://interldap.org FederID - http://www.federid.org/ Open Source identities management and federation - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [T5] What is your missing feature / bloking bug before 5.0 ?
Hi Thiago, You don't need to use the list binding. Just use the prop binding: [...] building the context in the java class seems somewhat cumbersomely to me, and also a bit confusing, since you cannot directly see what context the PageLink gets and have to lookup the method in the corresponding java method. Are there any advantages I don't see? There doesn't seem to be a JIRA feature request yet - do you mind opening one? You have my vote for it. Everyone can open a JIRA issue (including feature requests). Just create an account there. I know, since I opened a few myself. It just seemed that Joel Halbert knows what he talks about, in contrast to me just thinking "having any sort of named context parameters (though I don't know how they would look like?) would be great" - which doesn't qualify as a text for a JIRA issue, I hope. :) - Tobias - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: T5: Quartz and the IoC Registry?
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 Lewi
Re: t5: starting a service automatically
Angelo, How are you instantiating scheduler in your application? Are you using tapestry IOC module? /lubor On Sat, Oct 11, 2008 at 10:55 AM, Angelo Chen <[EMAIL PROTECTED]>wrote: > > Hi Lubor, > > Thanks for the quick reply, is the scheduler here Quartz? I can't > understand > fully how to use this, any more details? Thanks. > > Angelo > > > Lubor Gajda wrote: > > > > Hi Angelo, > > > > You can try this: > > > > public static void > > contributeRegistryStartup(OrderedConfiguration > > configuration, final Scheduler scheduler) { > > configuration.add("SchedulerStartup", new Runnable() { > >public void run() { > >scheduler.start() > >} > >}); > > } > > > > Regards > > Lubor > > > > On Sat, Oct 11, 2008 at 10:47 AM, Angelo Chen > > <[EMAIL PROTECTED]>wrote: > > > >> > >> Hi, > >> > >> I have a service that uses Quartz to fire an event every minute, I'd > like > >> to > >> know how to start this service once the application is loaded? thanks. > >> > >> Angelo > >> -- > >> View this message in context: > >> > http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931132.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] > >> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931178.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: starting a service automatically
You can flag the service to eager load (see @EagerLoad) Martijn Brinkers On Sat, 2008-10-11 at 02:47 -0700, Angelo Chen wrote: > Hi, > > I have a service that uses Quartz to fire an event every minute, I'd like to > know how to start this service once the application is loaded? thanks. > > Angelo - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: t5: starting a service automatically
Hi Lubor, Thanks for the quick reply, is the scheduler here Quartz? I can't understand fully how to use this, any more details? Thanks. Angelo Lubor Gajda wrote: > > Hi Angelo, > > You can try this: > > public static void > contributeRegistryStartup(OrderedConfiguration > configuration, final Scheduler scheduler) { > configuration.add("SchedulerStartup", new Runnable() { >public void run() { >scheduler.start() >} >}); > } > > Regards > Lubor > > On Sat, Oct 11, 2008 at 10:47 AM, Angelo Chen > <[EMAIL PROTECTED]>wrote: > >> >> Hi, >> >> I have a service that uses Quartz to fire an event every minute, I'd like >> to >> know how to start this service once the application is loaded? thanks. >> >> Angelo >> -- >> View this message in context: >> http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931132.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] >> >> > > -- View this message in context: http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931178.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: starting a service automatically
Hi Angelo, You can try this: public static void contributeRegistryStartup(OrderedConfiguration configuration, final Scheduler scheduler) { configuration.add("SchedulerStartup", new Runnable() { public void run() { scheduler.start() } }); } Regards Lubor On Sat, Oct 11, 2008 at 10:47 AM, Angelo Chen <[EMAIL PROTECTED]>wrote: > > Hi, > > I have a service that uses Quartz to fire an event every minute, I'd like > to > know how to start this service once the application is loaded? thanks. > > Angelo > -- > View this message in context: > http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931132.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] > >
t5: starting a service automatically
Hi, I have a service that uses Quartz to fire an event every minute, I'd like to know how to start this service once the application is loaded? thanks. Angelo -- View this message in context: http://www.nabble.com/t5%3A-starting-a-service-automatically-tp19931132p19931132.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?
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] What is your missing feature / bloking bug before 5.0 ?
Hi Francois, I agree with your suggestions. I would like to be able to configure Javascript to be included in the head section rather than at the bottom of the page. We recently had a discussion about it here: https://issues.apache.org/jira/browse/TAPESTRY-2364. Without it you need hacks to execute Javascript before the page is rendered, which is really a common thing to do, especially if you setup your page to also work without Javascript. regards, Onno On Fri, Oct 10, 2008 at 10:56 AM, Francois Armand <[EMAIL PROTECTED]>wrote: > Ok, so we reach the point where T5.0 final is imminent, and we are all (I > think) really happy of that. > As we also want that T5 really makes its way in the Java Web ecosystem, I > think it always miss some really little things that are really important for > a .0 release. > > I purpose to start this discussion in the ml, and when some major gap > emerge, to post them in the issue tracker, and vote for them. > > So, for me, what I expect for 5.0 : > 1/ - full and complete and rather simple internationalization : I really > believe that a web framework can ignore other language and culture (date, > number) today ; >that include validator translation and stuff like that. > 2/ - valid XHTML, even for IE, by default. The workaround is here for some > time, but why it's not default ? See > http://wiki.apache.org/tapestry/Tapestry5HowToXhtml > 3/ - something around AJAX documentation and Zone update inside a form > (that includes update of part of a form on change from a select : > https://issues.apache.org/jira/browse/TAP5-138) > 4/- a property symbol provider, also simple and in use almost always @see > http://wiki.apache.org/tapestry/Tapestry5HowToReadSymbolsFromPropertiesFile > > Without 1, T5 just can't get is path easely outside English contries ; > Without 2, T5 can hardly be considered top-level (even if on the technical > point of vue, it's completly rigth and it's IE fault), without 3, AJAX seems > not so well integrated, and it's hot stuff todays, and 4 is so much common > in a application, why do we have to bother with that each time ? > > Other simple stuff that should be corrected before 5.0 (in my opinion) : > - why hidden field is still missing ? It's so easy to add, a new user > should not even have to search for that ! > - https://issues.apache.org/jira/browse/TAP5-257, that seems to bring > other pb with decorator and the like ; > > What do you thing about that ? Does it make sense to open a "community want > that" bug, that have to be quick to handle, but that brings the attention of > T5 developers on what we need ? Perhaps we can already vote for existing > bugs ? Which ones ? > > -- > Francois Armand > Etudes & Développements J2EE > Groupe Linagora - http://www.linagora.com > Tél.: +33 (0)1 58 18 68 28 > --- > InterLDAP - http://interldap.org FederID - http://www.federid.org/ > Open Source identities management and federation > > > - > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >