【问题标题】:Speed up startup of Java enterprise web application [closed]加快 Java 企业 Web 应用程序的启动 [关闭]
【发布时间】:2011-12-10 18:11:56
【问题描述】:

我目前正在从事的项目涉及托管以下应用程序构建的 Tomcat servlet 容器:

  • Hibernate 作为 ORM 框架
  • Spring 作为中间层
  • Web 层的 XLST 转换

有什么方法可以加快构建 Spring bean 信息的 hibernate entinty 结构体,或者有什么常见的技巧来加速 Java 企业 Web 应用程序的启动?

【问题讨论】:

  • 您想加快启动速度以缩短开发或生产期间的周转时间吗?
  • 我只想缩短服务器的启动时间,因此暗示新技术(即 Roo、Grails、Play! Framework 等)在我的情况下不符合条件。
  • 您想减少开发应用程序所需的时间,还是服务器需要启动的时间?
  • 服务器需要启动的时间
  • 我一直在使用 Jetty,但我并不打算使用 JRebel

标签: java performance hibernate spring startup


【解决方案1】:

与其他所有事情一样,进行分析并找出您真正花费时间的地方。是的,Spring 自动检测在大型应用程序中可能会很慢,但急切的初始化也会如此。如果没有分析信息,您只是在猜测问题所在。

【讨论】:

    【解决方案2】:

    答案迟到了,但如果它对任何人都有帮助:我发现最好的事情是逐项检查您的 web.xml 并尽可能消除任何臃肿。这为我节省了几分钟。分析也很好,因为它可以帮助您查明昂贵的东西,比如额外的 Hibernate 会话工厂。保持精简 POM 以减少类路径扫描时间(使用依赖树)。使用@Autowired 非常方便,但如果可行并且您有时间,请检查您的应用程序并删除所有未使用的引用和不必要的注释。组件扫描也是如此。确保您的数据库连接器是最新的。大部分过多的启动时间通常与您的特定应用程序有关,而不是与现代 Tomcat 实例或框架有关。如果您的应用程序很大,并且您可以将它们模块化到不同的 jar 中,那么您可以简单地在 dev 中加载当时任务所需的那些。

    在嘈杂的记录器上将日志记录设置为 WARN。在 Tomcat 6/7 中的 org.apache.catalina.startup.TldConfig.jarsToSkip 中添加要跳过的 TLD jar 也会有所帮助。使用 APR 进行本机编译并没有为我节省启动时间,尽管我认为这有助于运行容器提供页面而不是启动时间。此外,禁用antiJARLocking/antiResourceLocking 将加快您的Tomcat 启动时间。

    使用 Spring 4/Hibernate 4/Tomcat 7 和速度适中的笔记本电脑,您应该能够在 15 秒内启动。

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2013-04-06
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多