我有一个 Web 应用程序,通常需要花费大量时间才能在 Tomcat 上部署。我怀疑某处有一个数据库连接正在等待超时,但这只是一个猜测,我想确定是什么导致了阻塞,以便我可以解决这个问题。谁能建议我可以这样做的方法?我应该在加载 WAR 时分析 Tomcat 并在那里寻找线索吗?如果是这样,是否有适合初学者的教程?
如果这很重要,我的 Web 应用程序使用 Spring 和 Hibernate。一位同事告诉我,也许这些会导致速度变慢,因为它们太大了,以至于某个类加载器在需要加载的类的绝对数量上窒息。
当我停止 Tomcat 或将 WAR 热部署到已经运行的 Tomcat 时,我也会看到这一点:
Jun 1, 2012 6:03:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/nacem-rest] registered the JDBC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Jun 1, 2012 6:03:34 PM org.apache.catalina.startup.HostConfig deployWAR
也许这是问题的一部分?重新部署我的 Web 应用程序几乎总是需要重新启动 Tomcat,而且我一直认为上面提到的 JDBC 驱动程序问题是罪魁祸首,但也许它也与缓慢的启动时间有关?