我们目前使用 MyEclipse 及其内置 Maven4MyEclipse 集成和内置 J2EE 服务器支持,但希望转换为常规 Eclipse(特别是 Helios)以便能够在 Windows 上使用其 64 位安装。 (MyEclipse 尚不支持 Windows 上的 64 位。)
到目前为止,我已经有了一个 Helios eclipse 的工作原型,使用 m2eclipse 和 WTP 插件将我们的大型 Web 应用程序部署到 tomcat。部署需要占用一些处理器资源,但它可以正常工作并且应用程序会启动。
这里的关键不同之处在于依赖项目的部署方式。在我们的 MyEclipse 环境中,所有依赖项目都部署到 WEB-INF/classes 文件夹中,因此当服务器运行时,对 IDE 中的 java 类进行更改只会将受影响的文件复制到服务器的 WEB-INF/classes 并将该类热插拔到 JVM 中,然后...繁荣 - 对服务器进行实时更改。非常适合调试。
然而,在我的 helios 转换中,所有依赖项目都被 JARed 并放入 WEB-INF/lib 中。这样做的优点是实际上看起来像我们真正的 Maven 构建的生产映像的样子,但开发环境因此受到严重不利,因为热插拔功能似乎完全丧失了。在这里,如果我更改依赖项目中的 java 类,m2eclipse 将重新打包 JAR,看到部署的 Web 应用程序不同步,并重新发布整个应用程序。这不仅是一个问题,因为整个 Web 应用程序必须循环(坦率地说,考虑到它的大小和巨大的初始化时间,我们的应用程序做得不好),而且它也是 Eclipse 重新发布的一个令人讨厌的延迟。 (对于我们的应用程序,这大约需要一两分钟。)
所以我的问题是:有没有一种方法可以让依赖项目内部的更改热交换到正在运行的 JVM 并替换已部署的文件,而无需这种令人讨厌的重新发布惩罚?我假设这意味着将这些类文件部署到 WEB-INF/classes,但不确定作为此解决方案的一部分是否 (a) 可能或 (b) 确实必要。
其他人正在做什么来解决这个问题?可以解决吗?
提前致谢!
我认为您正在寻找中描述的解决方案回复:使用 m2eclipse 进行 WTP Tomcat 热部署:
如果启用“服务模块
没有发布”选项,然后
特殊的jar被添加到Tomcat中
允许 Tomcat 支持的服务器
在 WTP 中控制“类路径”
网络应用程序。另外,实用性
项目不会组装到 jar 中。
相反,Java 输出文件夹
公用事业项目包括在
网络的“类路径”
应用,有效服务
直接.class文件。如果您禁用
上下文的自动加载,以及
在调试模式下运行,您所做的更改
类可以进行热代码替换,因此
上下文不必重新加载。我
相信这会实现你的目标
正在找。
为此:
- 前往Server view
-
双击你的Tomcat服务器打开服务器设置
- In 服务器选项,选择无需发布即可提供模块 option
- In 出版,选择从不自动发布 option
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)