Re: [S2] Interceptor Question (Thread Safety)
[...] [this] means that there are no thread safety issues *of the discussed kind* with interceptor instance variables. [...] should have been clear from the discussion context, but thanks for further clarification :) Dave Newton schrieb: > --- Rene Gielen <[EMAIL PROTECTED]> wrote: >> [this] means that there are no thread safety issues >> with interceptor instance variables. > > Well, not in terms of a property of the same name set > in different interceptor references in a config file > (er... it made sense in my head) but interceptors > still need to keep thread safety in mind, just like > servlets or S1 actions--instance variables are still > shared across the applications, it's just that each > interceptor-ref is a separate instance. > > d. > > > > > > Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, > news, photos & more. > http://mobile.yahoo.com/go?refer=1GNXIC > > - > 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: [S2] Interceptor Question (Thread Safety)
--- Rene Gielen <[EMAIL PROTECTED]> wrote: > [this] means that there are no thread safety issues > with interceptor instance variables. Well, not in terms of a property of the same name set in different interceptor references in a config file (er... it made sense in my head) but interceptors still need to keep thread safety in mind, just like servlets or S1 actions--instance variables are still shared across the applications, it's just that each interceptor-ref is a separate instance. d. Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. http://mobile.yahoo.com/go?refer=1GNXIC - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [S2] Interceptor Question (Thread Safety)
I'll add some words on that to the docs. Am Di, 10.07.2007, 13:42, schrieb Hoying, Ken: > Thank you, Rene! > > This is a great help to me and allows me to move forward with my current > implementation. It might be a good idea for someone from the Struts2 > project to update the documentation with Rene's finding, as I am sure > others will also find this unclear and concerning. > > Thank you again! > > -Original Message- > From: Rene Gielen [mailto:[EMAIL PROTECTED] > Sent: Tuesday, July 10, 2007 2:38 AM > To: Struts Users Mailing List > Subject: Re: [S2] Interceptor Question (Thread Safety) > > Ken, others, > > now for the definitive answer: > There is one instance per interceptor ref, thus interceptor instances > being unique within the scope they are referenced in. > > Example: > > > > > > > barfoobar > > /index.jsp > > > > barfoo > > /index.jsp > > > > This will cause two instances of FooInterceptor being created, one with > bar property set to "barfoobar" and one with "barfoo". The interceptors > parameters given in struts.xml are only set once per instance, which > means that there are no thread safety issues with interceptor instance > variables. > > HTH, > Rene > > > Rene Gielen schrieb: >> Uahhh, >> >> thanks for pointing out this information, I was way to fast to reply >> on the said question - I recalled it wrong. Indeed documentation is >> right here, they need to be thread safe - sorry for causing >> misunderstanding here. >> >> Anyway, this does not answer the question if interceptor parameters >> introduce thread safety issues. The builder mechanism is a little >> complicated here, but AFAIK Interceptor instances are unique to the >> scope they are configured in. I will check this tonight to ensure we >> do not face a problem here with current implementation and hopefully >> can provide a reliable answer then. >> >> Regards, >> Rene >> >> http://struts.apache.org/2.x/docs/writing-interceptors.html >>> >>> Thread Safety >>> Interceptors must be thread-safe! >>> >>> A Struts 2 Action instance is created for every request and do not >>> need to be thread-safe. Conversely, Interceptors are shared between >>> requests and must be thread-safe. >>> >>> -Original Message- >>> From: Rene Gielen [mailto:[EMAIL PROTECTED] >>> Sent: Sunday, July 08, 2007 7:00 AM >>> To: Struts Users Mailing List >>> Subject: Re: [S2] Interceptor Question (Thread Safety) >>> >>> Ken, >>> >>> there is no problem at all since s2 interceptor instances, as well as > >>> action instances, are created per ActionInvokation, which means they >>> are always operated in a single thread. >>> >>> Regards, >>> Rene >>> >>> Hoying, Ken schrieb: >>>> From what I understand from reading the documentation, interceptors >>>> are suppose to be thread safe. However, I have noticed that some of > >>>> the interceptors do contain instance variables and I have seen some > >>>> examples where these variables are set or modified from with in the >>>> action configurations. >>>> >>>> For example, the File Upload interceptor allows you to set the >>>> maximumSize and allowedTypes. Is this going to work if I have 2 >>>> different actions each allowing different maximumSize and >>> allowedTypes? >>>> This does not seem thread safe to me. Is there only one instance of > >>>> the interceptors or does maybe each action mapping have its own >>>> instance of the interceptors? >>>> >>>> Thanks in advance, >>>> Ken >>>> >>>> >>>> >>>> - >>>> ***Note:The information contained in this message may be privileged >>>> and confidential and protected from disclosure. If the reader of >>>> this message is not the intended recipient, or an employee or agent >>>> responsible for delivering this message to the intended recipient, >>>> you are hereby notified that any dissemination, distribution or >>>> copying of this communication is strictly prohibited. If you have >>>> received this communication in error, please notify the Sender >>
RE: [S2] Interceptor Question (Thread Safety)
Thank you, Rene! This is a great help to me and allows me to move forward with my current implementation. It might be a good idea for someone from the Struts2 project to update the documentation with Rene's finding, as I am sure others will also find this unclear and concerning. Thank you again! -Original Message- From: Rene Gielen [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 10, 2007 2:38 AM To: Struts Users Mailing List Subject: Re: [S2] Interceptor Question (Thread Safety) Ken, others, now for the definitive answer: There is one instance per interceptor ref, thus interceptor instances being unique within the scope they are referenced in. Example: barfoobar /index.jsp barfoo /index.jsp This will cause two instances of FooInterceptor being created, one with bar property set to "barfoobar" and one with "barfoo". The interceptors parameters given in struts.xml are only set once per instance, which means that there are no thread safety issues with interceptor instance variables. HTH, Rene Rene Gielen schrieb: > Uahhh, > > thanks for pointing out this information, I was way to fast to reply > on the said question - I recalled it wrong. Indeed documentation is > right here, they need to be thread safe - sorry for causing > misunderstanding here. > > Anyway, this does not answer the question if interceptor parameters > introduce thread safety issues. The builder mechanism is a little > complicated here, but AFAIK Interceptor instances are unique to the > scope they are configured in. I will check this tonight to ensure we > do not face a problem here with current implementation and hopefully > can provide a reliable answer then. > > Regards, > Rene > > http://struts.apache.org/2.x/docs/writing-interceptors.html >> >> Thread Safety >> Interceptors must be thread-safe! >> >> A Struts 2 Action instance is created for every request and do not >> need to be thread-safe. Conversely, Interceptors are shared between >> requests and must be thread-safe. >> >> -Original Message- >> From: Rene Gielen [mailto:[EMAIL PROTECTED] >> Sent: Sunday, July 08, 2007 7:00 AM >> To: Struts Users Mailing List >> Subject: Re: [S2] Interceptor Question (Thread Safety) >> >> Ken, >> >> there is no problem at all since s2 interceptor instances, as well as >> action instances, are created per ActionInvokation, which means they >> are always operated in a single thread. >> >> Regards, >> Rene >> >> Hoying, Ken schrieb: >>> From what I understand from reading the documentation, interceptors >>> are suppose to be thread safe. However, I have noticed that some of >>> the interceptors do contain instance variables and I have seen some >>> examples where these variables are set or modified from with in the >>> action configurations. >>> >>> For example, the File Upload interceptor allows you to set the >>> maximumSize and allowedTypes. Is this going to work if I have 2 >>> different actions each allowing different maximumSize and >> allowedTypes? >>> This does not seem thread safe to me. Is there only one instance of >>> the interceptors or does maybe each action mapping have its own >>> instance of the interceptors? >>> >>> Thanks in advance, >>> Ken >>> >>> >>> >>> - >>> ***Note:The information contained in this message may be privileged >>> and confidential and protected from disclosure. If the reader of >>> this message is not the intended recipient, or an employee or agent >>> responsible for delivering this message to the intended recipient, >>> you are hereby notified that any dissemination, distribution or >>> copying of this communication is strictly prohibited. If you have >>> received this communication in error, please notify the Sender >>> immediately by replying to the message and deleting it from your computer. Thank you. >>> Premier Inc. >> -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - 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: [S2] Interceptor Question (Thread Safety)
Ken, others, now for the definitive answer: There is one instance per interceptor ref, thus interceptor instances being unique within the scope they are referenced in. Example: barfoobar /index.jsp barfoo /index.jsp This will cause two instances of FooInterceptor being created, one with bar property set to "barfoobar" and one with "barfoo". The interceptors parameters given in struts.xml are only set once per instance, which means that there are no thread safety issues with interceptor instance variables. HTH, Rene Rene Gielen schrieb: Uahhh, thanks for pointing out this information, I was way to fast to reply on the said question - I recalled it wrong. Indeed documentation is right here, they need to be thread safe - sorry for causing misunderstanding here. Anyway, this does not answer the question if interceptor parameters introduce thread safety issues. The builder mechanism is a little complicated here, but AFAIK Interceptor instances are unique to the scope they are configured in. I will check this tonight to ensure we do not face a problem here with current implementation and hopefully can provide a reliable answer then. Regards, Rene Thanks, Rene! Someone might want to update the documentation to make this clearer. The following document seems to indicate otherwise: http://struts.apache.org/2.x/docs/writing-interceptors.html Thread Safety Interceptors must be thread-safe! A Struts 2 Action instance is created for every request and do not need to be thread-safe. Conversely, Interceptors are shared between requests and must be thread-safe. -Original Message- From: Rene Gielen [mailto:[EMAIL PROTECTED] Sent: Sunday, July 08, 2007 7:00 AM To: Struts Users Mailing List Subject: Re: [S2] Interceptor Question (Thread Safety) Ken, there is no problem at all since s2 interceptor instances, as well as action instances, are created per ActionInvokation, which means they are always operated in a single thread. Regards, Rene Hoying, Ken schrieb: From what I understand from reading the documentation, interceptors are suppose to be thread safe. However, I have noticed that some of the interceptors do contain instance variables and I have seen some examples where these variables are set or modified from with in the action configurations. For example, the File Upload interceptor allows you to set the maximumSize and allowedTypes. Is this going to work if I have 2 different actions each allowing different maximumSize and allowedTypes? This does not seem thread safe to me. Is there only one instance of the interceptors or does maybe each action mapping have its own instance of the interceptors? Thanks in advance, Ken - ***Note:The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the Sender immediately by replying to the message and deleting it from your computer. Thank you. Premier Inc. -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [S2] Interceptor Question (Thread Safety)
Can someone provide a definitive answer on this then? It is obviously a key infrastructure and implementation issue. Thank you! -Original Message- From: Musachy Barroso [mailto:[EMAIL PROTECTED] Sent: Monday, July 09, 2007 11:30 AM To: Struts Users Mailing List Subject: Re: [S2] Interceptor Question (Thread Safety) If that's right then I've been wrong for a long time :). I think that interceptor instances are reused between requests. On DefaultActionProxy:prepare: config = configuration.getRuntimeConfiguration().getActionConfig(namespace, actionName); that configuration is not instantiated on each request. musachy On 7/9/07, Hoying, Ken <[EMAIL PROTECTED]> wrote: > > Thanks, Rene! > > Someone might want to update the documentation to make this clearer. > The following document seems to indicate otherwise: > > http://struts.apache.org/2.x/docs/writing-interceptors.html > > Thread Safety > Interceptors must be thread-safe! > > A Struts 2 Action instance is created for every request and do not > need to be thread-safe. Conversely, Interceptors are shared between > requests and must be thread-safe. > > -Original Message- > From: Rene Gielen [mailto:[EMAIL PROTECTED] > Sent: Sunday, July 08, 2007 7:00 AM > To: Struts Users Mailing List > Subject: Re: [S2] Interceptor Question (Thread Safety) > > Ken, > > there is no problem at all since s2 interceptor instances, as well as > action instances, are created per ActionInvokation, which means they > are always operated in a single thread. > > Regards, > Rene > > Hoying, Ken schrieb: > > From what I understand from reading the documentation, interceptors > > are suppose to be thread safe. However, I have noticed that some of > > the interceptors do contain instance variables and I have seen some > > examples where these variables are set or modified from with in the > > action configurations. > > > > For example, the File Upload interceptor allows you to set the > > maximumSize and allowedTypes. Is this going to work if I have 2 > > different actions each allowing different maximumSize and > allowedTypes? > > This does not seem thread safe to me. Is there only one instance of > > the interceptors or does maybe each action mapping have its own > > instance of the interceptors? > > > > Thanks in advance, > > Ken > > > > > > > > - > > ***Note:The information contained in this message may be privileged > > and confidential and protected from disclosure. If the reader of > > this message is not the intended recipient, or an employee or agent > > responsible for delivering this message to the intended recipient, > > you > > > are hereby notified that any dissemination, distribution or copying > > of > > > this communication is strictly prohibited. If you have received this > > communication in error, please notify the Sender immediately by > > replying to the message and deleting it from your computer. Thank you. > > > Premier Inc. > > > -- > Rene Gielen | http://it-neering.net/ > Aachen | PGP-ID: BECB785A > Germany | gielen at it-neering.net > > - > 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] > > -- "Hey you! Would you help me to carry the stone?" Pink Floyd - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: [S2] Interceptor Question (Thread Safety)
Uahhh, thanks for pointing out this information, I was way to fast to reply on the said question - I recalled it wrong. Indeed documentation is right here, they need to be thread safe - sorry for causing misunderstanding here. Anyway, this does not answer the question if interceptor parameters introduce thread safety issues. The builder mechanism is a little complicated here, but AFAIK Interceptor instances are unique to the scope they are configured in. I will check this tonight to ensure we do not face a problem here with current implementation and hopefully can provide a reliable answer then. Regards, Rene http://struts.apache.org/2.x/docs/writing-interceptors.html > > Thread Safety > Interceptors must be thread-safe! > > A Struts 2 Action instance is created for every request and do not need > to be thread-safe. Conversely, Interceptors are shared between requests > and must be thread-safe. > > -Original Message- > From: Rene Gielen [mailto:[EMAIL PROTECTED] > Sent: Sunday, July 08, 2007 7:00 AM > To: Struts Users Mailing List > Subject: Re: [S2] Interceptor Question (Thread Safety) > > Ken, > > there is no problem at all since s2 interceptor instances, as well as > action instances, are created per ActionInvokation, which means they are > always operated in a single thread. > > Regards, > Rene > > Hoying, Ken schrieb: >> From what I understand from reading the documentation, interceptors >> are suppose to be thread safe. However, I have noticed that some of >> the interceptors do contain instance variables and I have seen some >> examples where these variables are set or modified from with in the >> action configurations. >> >> For example, the File Upload interceptor allows you to set the >> maximumSize and allowedTypes. Is this going to work if I have 2 >> different actions each allowing different maximumSize and > allowedTypes? >> This does not seem thread safe to me. Is there only one instance of >> the interceptors or does maybe each action mapping have its own >> instance of the interceptors? >> >> Thanks in advance, >> Ken >> >> >> >> - >> ***Note:The information contained in this message may be privileged >> and confidential and protected from disclosure. If the reader of this >> message is not the intended recipient, or an employee or agent >> responsible for delivering this message to the intended recipient, you > >> are hereby notified that any dissemination, distribution or copying of > >> this communication is strictly prohibited. If you have received this >> communication in error, please notify the Sender immediately by >> replying to the message and deleting it from your computer. Thank you. > >> Premier Inc. > > > -- > Rene Gielen | http://it-neering.net/ > Aachen | PGP-ID: BECB785A > Germany | gielen at it-neering.net > > - > 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] > > -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [S2] Interceptor Question (Thread Safety)
If that's right then I've been wrong for a long time :). I think that interceptor instances are reused between requests. On DefaultActionProxy:prepare: config = configuration.getRuntimeConfiguration().getActionConfig(namespace, actionName); that configuration is not instantiated on each request. musachy On 7/9/07, Hoying, Ken <[EMAIL PROTECTED]> wrote: Thanks, Rene! Someone might want to update the documentation to make this clearer. The following document seems to indicate otherwise: http://struts.apache.org/2.x/docs/writing-interceptors.html Thread Safety Interceptors must be thread-safe! A Struts 2 Action instance is created for every request and do not need to be thread-safe. Conversely, Interceptors are shared between requests and must be thread-safe. -Original Message- From: Rene Gielen [mailto:[EMAIL PROTECTED] Sent: Sunday, July 08, 2007 7:00 AM To: Struts Users Mailing List Subject: Re: [S2] Interceptor Question (Thread Safety) Ken, there is no problem at all since s2 interceptor instances, as well as action instances, are created per ActionInvokation, which means they are always operated in a single thread. Regards, Rene Hoying, Ken schrieb: > From what I understand from reading the documentation, interceptors > are suppose to be thread safe. However, I have noticed that some of > the interceptors do contain instance variables and I have seen some > examples where these variables are set or modified from with in the > action configurations. > > For example, the File Upload interceptor allows you to set the > maximumSize and allowedTypes. Is this going to work if I have 2 > different actions each allowing different maximumSize and allowedTypes? > This does not seem thread safe to me. Is there only one instance of > the interceptors or does maybe each action mapping have its own > instance of the interceptors? > > Thanks in advance, > Ken > > > > - > ***Note:The information contained in this message may be privileged > and confidential and protected from disclosure. If the reader of this > message is not the intended recipient, or an employee or agent > responsible for delivering this message to the intended recipient, you > are hereby notified that any dissemination, distribution or copying of > this communication is strictly prohibited. If you have received this > communication in error, please notify the Sender immediately by > replying to the message and deleting it from your computer. Thank you. > Premier Inc. -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - 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] -- "Hey you! Would you help me to carry the stone?" Pink Floyd
RE: [S2] Interceptor Question (Thread Safety)
Thanks, Rene! Someone might want to update the documentation to make this clearer. The following document seems to indicate otherwise: http://struts.apache.org/2.x/docs/writing-interceptors.html Thread Safety Interceptors must be thread-safe! A Struts 2 Action instance is created for every request and do not need to be thread-safe. Conversely, Interceptors are shared between requests and must be thread-safe. -Original Message- From: Rene Gielen [mailto:[EMAIL PROTECTED] Sent: Sunday, July 08, 2007 7:00 AM To: Struts Users Mailing List Subject: Re: [S2] Interceptor Question (Thread Safety) Ken, there is no problem at all since s2 interceptor instances, as well as action instances, are created per ActionInvokation, which means they are always operated in a single thread. Regards, Rene Hoying, Ken schrieb: > From what I understand from reading the documentation, interceptors > are suppose to be thread safe. However, I have noticed that some of > the interceptors do contain instance variables and I have seen some > examples where these variables are set or modified from with in the > action configurations. > > For example, the File Upload interceptor allows you to set the > maximumSize and allowedTypes. Is this going to work if I have 2 > different actions each allowing different maximumSize and allowedTypes? > This does not seem thread safe to me. Is there only one instance of > the interceptors or does maybe each action mapping have its own > instance of the interceptors? > > Thanks in advance, > Ken > > > > - > ***Note:The information contained in this message may be privileged > and confidential and protected from disclosure. If the reader of this > message is not the intended recipient, or an employee or agent > responsible for delivering this message to the intended recipient, you > are hereby notified that any dissemination, distribution or copying of > this communication is strictly prohibited. If you have received this > communication in error, please notify the Sender immediately by > replying to the message and deleting it from your computer. Thank you. > Premier Inc. -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - 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: [S2] Interceptor Question (Thread Safety)
Ken, there is no problem at all since s2 interceptor instances, as well as action instances, are created per ActionInvokation, which means they are always operated in a single thread. Regards, Rene Hoying, Ken schrieb: From what I understand from reading the documentation, interceptors are suppose to be thread safe. However, I have noticed that some of the interceptors do contain instance variables and I have seen some examples where these variables are set or modified from with in the action configurations. For example, the File Upload interceptor allows you to set the maximumSize and allowedTypes. Is this going to work if I have 2 different actions each allowing different maximumSize and allowedTypes? This does not seem thread safe to me. Is there only one instance of the interceptors or does maybe each action mapping have its own instance of the interceptors? Thanks in advance, Ken - ***Note:The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the Sender immediately by replying to the message and deleting it from your computer. Thank you. Premier Inc. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [S2] Interceptor Question (Thread Safety)
Ken, there is no problem at all since s2 interceptor instances, as well as action instances, are created per ActionInvokation, which means they are always operated in a single thread. Regards, Rene Hoying, Ken schrieb: From what I understand from reading the documentation, interceptors are suppose to be thread safe. However, I have noticed that some of the interceptors do contain instance variables and I have seen some examples where these variables are set or modified from with in the action configurations. For example, the File Upload interceptor allows you to set the maximumSize and allowedTypes. Is this going to work if I have 2 different actions each allowing different maximumSize and allowedTypes? This does not seem thread safe to me. Is there only one instance of the interceptors or does maybe each action mapping have its own instance of the interceptors? Thanks in advance, Ken - ***Note:The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the Sender immediately by replying to the message and deleting it from your computer. Thank you. Premier Inc. -- Rene Gielen | http://it-neering.net/ Aachen | PGP-ID: BECB785A Germany | gielen at it-neering.net - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]