Are there any reasons to not auto-restart tomcat in the case of a crash? It seems like a no-brainer to restart the process, especially in production, if that can mean less downtime due to a crash, but typically this isn't the default in the /etc/init.d/tomcat6 provided by most distributions. It makes sense that during development, if the server crashes, you want to be aware of it and then be able to troubleshoot the system in its current state. Is it a "best practice" to auto-restart services like Tomcat in production environments?
In my experience as a SysEng, I'd advise against auto restarting services in production, especially if you have a history of issues. Using daemontools pains me. I've seen too many servers get into a crash loop and fill up their drives with logs before someone can get to them, which just creates even more headache. I would recommend against it, but everyone weighs risks differently in their environments.
That said, some configuration systems like Puppet can also enforce services to be running, and there can be more logic to ensure dependencies, and prevent issues.