How can I make a ServletContextListener stop the Java EE application?

后端 未结 2 486
清歌不尽
清歌不尽 2020-12-06 11:34

I have a ServletContextListener which performs some database management functions when my Java EE application starts. This runs in my application before JPA and other pieces

2条回答
  •  無奈伤痛
    2020-12-06 12:02

    In your listener, catch any exceptions and use servlet context attributes to store flags or other useful information about the error. You should probably also log something to indicate that the app is non-functional.

    At this point, your options may be dictated by the architecture of your app. If all requests are handled by a single controller/dispatcher servlet, it might make sense to have its init method check the context attributes and throw an UnavailableException. Just be aware that the exception only applies to the specific servlet throwing it. This makes the approach less manageable if your app contains many servlets or allows direct access to other resources.

    Another option would be to create a filter that intercepts every request, checks the context attributes and then throws an exception. Other variations are certainly possible.

提交回复
热议问题