5

Eclipse 的 Web 工具平台 (WTP) 允许您将 Tomcat 配置为“无需发布的服务器模块”:

Web 内容将直接从动态 Web 项目的“WebContent”文件夹中提供。自定义上下文用于使项目的依赖项在 Web 应用程序的类加载器中可用。

在一个 5 步过程中(只是开玩笑,您选择步骤#),技术上会发生什么以及 Eclipse 生成的文件在哪里?我确实注意到 Eclipseorg.eclipse.jst.server.tomcat.runtime.70.loader.jar在 Tomcat lib 目录中生成了一个文件。

4

1 回答 1

15

这个想法是直接从开发工作区的分散目录结构中为 Web 应用程序提供服务,而不是将模块打包到 JAR 中,然后最终进入WEB-INF/libWAR。

主要好处是:

  • 你不需要建立档案。
  • 当您更改工作区中的资源时,更改会反映在正在运行的 web 应用程序中,而无需重新部署 web 应用程序或重新启动服务器。

使用 Servlet 3.0,Web 资源也可以捆绑在库 JAR 中META-INF/resources,因此类资源可能来自多个工作区目录。

Tomcat 7.0 支持 aVirtualWebappLoader和 aVirtualDirContext来配置基于分散资源和类目录的集合的 Web 应用程序。

为了直接从 Eclipse 工作区为您的 Web 应用程序提供服务,WTP 在$WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/conf/server.xml

出于某种原因,WTP 不直接使用 Tomcat 加载器和上下文实现,而是有自己的WtpDirContextWtpWebappLoader它们略有不同但相似。(我相信这种方法比 Tomcat 中的当前解决方案更老。TLD 扫描有一些特殊的逻辑 - 我不确定最新的 Tomcat 版本是否仍然需要。)这些帮助类包含在org.eclipse.jst.server.tomcat.runtime.70.loader.jar你注意到的中。

如果没有Serve modules without publishing,当您在库模块中更改 Web 资源时,META-INF/resources在浏览器中重新加载当前页面后,此更改将不会在正在运行的应用程序中直接可见。

于 2013-05-05T14:53:58.810 回答