代码之家  ›  专栏  ›  技术社区  ›  Ramon

如何在不重新启动web应用程序的情况下重新加载servlet类?

  •  0
  • Ramon  · 技术社区  · 16 年前

    我只想重新加载我的web层类,而不想重新加载我的服务层类(初始化和更改这些类需要更长的时间)。没有从我的服务层到web层的引用,我可以毫无问题地创建web层的一个全新实例。

    我可以设想一个解决方案,其中包含复杂的类装入器技巧,将web层隔离在它自己的类装入器中,我认为这可能是唯一的方法,所以我要问的是,是否有一个库可以这样做?

    我知道JavaRebel——我不需要那么大的能量,我真的在寻找一个更轻量级的免费解决方案。

    4 回复  |  直到 16 年前
        1
  •  3
  •   Kennet    16 年前

    如果您的web层与服务层分离,您是否可以将它们部署为分离的应用程序?然后,可以根据需要经常重新加载web应用程序。

    如果重新加载webapp的原因是配置更改,则将属性等从WEB INF文件夹中移开(因为它们通常不可重新加载/重新加载)。在spring和freemarker中可以找到处理可重载配置等的思想。

        2
  •  1
  •   BalusC    16 年前

    我认为开发这个功能比实际开发webapp要浪费更多的时间。只要有它的生活,你就可以得到回报。我可以想象,对于那些习惯于在每一行新代码上进行f5/刷新的php开发人员来说,这可能是一件令人沮丧的事情……但是,这也取决于您正在使用的appserver。大多数只是支持热部署。确保您的配置也能做到这一点,通常ide应该已经处理好了(至少,我的配置是:eclipse+tomcat6或glassfish3)。

    它还可能取决于所讨论的appserver热部署是否快速和/或成功。我经历过玻璃鱼-虽然起步慢-是 非常快 在热部署中。我喜欢它。Tomcat在这方面有点慢,而且并不总是成功(例如,内存中仍然存在旧的东西/垃圾等等)。

        4
  •  0
  •   Upgradingdave    16 年前

    不确定这是否能解决您的问题,但是如果您可以很容易地实例化web层的整个实例,例如,您可以创建一个名为reloadweblayer()的方法。然后在单击时向调用reoladweblayer()的管理页添加一个按钮?

    如果需要自动重新加载,可以设置计时器并每隔x秒调用reloadweblayer(),或者可以编写一个文件侦听器,每当类路径上的文件更改时运行reloadweblayer()?

    推荐文章