Refer to this discussion:
The problem was that Ebean starts a Timer to run cache warming queries. This had a delay of 30 seconds.
The Timer created was not a daemon... and so effectively blocked the shutdown of the JVM - hence the shutdown was effectively delayed by 30 seconds or so.
The fix was to change the Timer to be a daemon.