Dan Armbrust wrote:
> I'll tell you what, if you can tell me how to prevent my users (who
> have full control over the application / installation / hardware where
> this is running) from being able to shoot themselves in the foot and
> do something that causes my app to fail - I'll buy you a case of beer
> and not worry about this.
> 
> Until then, my servlet needs to do system checks - and if something is
> wrong, it needs to not deploy.  Thats the bit I haven't yet figured
> out...  How do I get tomcat to disable the entire context, when I
> detect that something is broken during startup?  And ideally, redirect
> the users to an error screen that tells them that it's broken..

Sounds like a job for a filter / context listener combination. Not the only
solution something like:
- context listener fire when app starts
- do checks
- set static with the result
- all requests run through filter
- filter checks static
- if OK - allow request
- if !OK don't allow request & return error page.

Mark

> 
> Thanks,
> 
> Dan
> 
> On Thu, Nov 12, 2009 at 11:42 AM, Joseph Morgan
> <joseph.mor...@ignitesales.com> wrote:
>> Dan,
>>
>> Pardon my advice, but... this sounds like a programming/config/illegal
>> state error that shouldn't make it to production.
>>
>> Of course, you could simply add instrumentation to the system to detect
>> that this servlet didn't do its thing, and route every request to a
>> holding page.
>>
>> Joe
>>
>> -----Original Message-----
>> From: Dan Armbrust [mailto:daniel.armbrust.l...@gmail.com]
>> Sent: Thursday, November 12, 2009 10:48 AM
>> To: Tomcat Users List
>> Subject: How to cancel a servlet startup?
>>
>> If I have a servlet which fails during init() for whatever reason -
>> the example below takes a null pointer....
>>
>> public class MyServlet extends HttpServlet
>> {
>>        private static final long serialVersionUID =
>> 7997991143724219371L;
>>
>>        @Override
>>        public void destroy()
>>        {
>>                //do stuff....
>>                super.destroy();
>>        }
>>
>>        @Override
>>        public void init() throws ServletException
>>        {
>>                try
>>                {
>>                        String a = null;
>>                        a.toString();
>>                }
>>                catch (Exception e)
>>                {
>>                        System.err.println("Startup error - cancelling
>> startup." +  e);
>>                        try
>>                        {
>>                                destroy();
>>                        }
>>                        catch (Exception e1)
>>                        {
>>                                //noop
>>                        }
>>                        throw new ServletException("Startup failing due
>> to unexpected error: " + e);
>>                }
>>        }
>> }
>>
>>
>> How can I make tomcat cancel the deployment of the entire war file
>> that this servlet was distributed with?
>>
>> I thought that throwing a ServletException back up to Tomcat would
>> make the webapp unavailable - but Tomcat continues to serve pages from
>> this webapp even though the startup failed.  That doesn't seem like
>> correct behavior... am I missing a setting somewhere?
>>
>> Thanks,
>>
>> Dan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to