I’m embedding Jetty in a similar manner as described here. When the RequestLogHandler can’t open the specified logfile, it throws an exception which is unfortunately caught by org.eclipse.jetty.server.Server and swallowed (but logged first, at least). This means that there’s no obvious way for me to tell if the log handler was started correctly.
Is there a way that I’m missing to detect when a handler couldn’t start?
This idea is based on the implementation of WebAppContext where you can use WebAppContext.getUnavailableException() to determine whether the context was initialized successfully.
Simply replace the default implementation of Server and Context with your own:
In your beans.xml, simply replace
org.mortbay.jetty.Server(and removeinit-method="start") andorg.mortbay.jetty.servlet.Contextwith your own implementations.This code is for Jetty 6 though (as is the example you linked to), as that’s what I have around. I didn’t test it though, but it’s pretty much the same as we are successfully using in conjunction with WebAppContext. In order to extend this to RequestLogHandler, you could either do the same for just any handler you are using or create a decorator to wrap any handler. You may want to look at
org.mortbay.jetty.handler.HandlerWrapperfor this purpose.