Same issue as here: http://sourceforge.net/tracker/index.php?func=detail&aid=1536147&group_id=116854&atid=676232
Non-Daemon threads prevent java VM from shutting down, if they are not shutdown by other means.
Two possible solutions:
a) easy, but maybe dirty because thread will simply end when VM shuts down, but IIRC not e.g. on context reload:
add "t.setDaemon(true);" in AssertionmanagerImpl.initialize().
b1) cleaner, but more complicated
hook into Servlet.destroy() (or struts equivalent??) and shutdown the thread.
This would require to remember the thread instance in AssetionManager, and propably subclass the ActionServlet, as I could not find any means to do this through the struts API (only have done a quick search, maybe there is a way to configure this)
b2) implement a ServletContextListener and add shutdown the thread from there.
example at http://www.java-tips.org/java-ee-tips/java-servlet/how-to-work-with-servletcontextlistener.html
Forgot to mention: b1) and b2) require changing the web.xml
b1) to change the servlet class, b2) to add the listener.