2010-03-05 108 views
0

我想重新加载只是我的web图层类而不重新加载我的服务层类(这需要更长的时间来初始化和更低频率更改)。没有从我的服务层到Web层的引用,我可以毫无问题地创建一个全新的Web层实例。如何在不重新启动我的Web应用程序的情况下重新加载servlet类?

我可以想象一个解决方案,涉及复杂的类加载器技巧来隔离它自己的类加载器中的Web层,我认为这可能是唯一的方法来做到这一点,所以我问的是,有没有图书馆在那里这是什么?

我知道JavaRebel - 我不需要那么多的力量,我真的在寻找更轻量级的免费解决方案。

+1

为什么?我没有看到任何真实世界的好处。也许只在调试/开发期间。 – BalusC 2010-03-05 13:17:35

+0

是的,这是我所需要的 - 开发不用于生产。 – Ramon 2010-03-05 14:33:13

回答

3

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

如果重新加载webapp的原因是配置发生变化,那么将属性等从WEB-INF文件夹移开(因为它们通常不会被重新加载/重新加载)。处理可重新加载的配置等的想法可以发现在春季和FreeMarker

+0

如果web层在不同的应用程序中,它们将如何引用服务层对象? – Ramon 2010-03-05 14:31:47

+0

那么,如果它们是真正分离的,那么你可以在同一个应用程序中使用套接字,webservices,REST ...而不是直接引用。 – Kennet 2010-03-05 15:43:03

0

不知道这会解决您的问题,但是如果您可以轻松实例化web层的整个实例,也许可以创建一个名为reloadWebLayer()的方法。然后添加一个按钮到一个管理页面,点击时调用reoladWebLayer()?

如果您需要它自动重新加载,您可以设置一个计时器并每隔x秒调用一次reloadWebLayer(),或者可以编写一个文件监听器,在类路径上的文件发生更改时运行reloadWebLayer()。

+0

虽然这不会重新加载类,这是我真正想要的。 – Ramon 2010-03-05 14:32:47

1

我认为你最终会浪费更多的时间来开发功能比实际开发webapp。与它一起生活吧,那就是你付钱的地方。我可以想象,这可能会让PHP开发的开发人员感到沮丧,他们习惯于每一行新代码都使用F5 /刷新......但是,这也取决于您使用的应用程序服务器。大多数只是支持hotdeploys。确保你的配置也是这样做的,通常IDE应该已经关注这个(至少,我的是:Eclipse + Tomcat6或Glassfish3)。

它也可能取决于有问题的应用服务器,无论hotdeploys是否快速和/或成功。我已经体验过Glassfish - 尽管它是一个慢起动器 - 非常快速在hotdeploys。我喜欢。 Tomcat在这方面有点慢,也不总是成功(例如,旧东西/垃圾仍然在内存中等等)。

+0

如果我等10秒钟重新加载我的web应用程序,并且每月工作8个小时,我每小时重复加载3次,每次工作时间为10 * 3 * 8 * 20 = 4800秒= 1小时20分钟。我和其他5位开发人员一起工作,即每年为我的一家小公司工作80个工时。这些东西加起来。 – Ramon 2010-03-05 14:49:16

+0

换句话说,您没有使用hotdeploys和/或Glassfish?顺便说一句:我真的不认为你会得到这样的事情发展,坚如磐石在80个小时内;) – BalusC 2010-03-05 14:53:34

+0

热部署仍然需要服务层重新初始化自己 - 它* * *我试图避免如此任何Web应用程序重新加载正是我试图避免 - 热或不。 – Ramon 2010-03-05 14:57:40

相关问题