当我在Eclipse中运行tomcat上的应用程序时会发生什么

use*_*849 5 eclipse tomcat spring-mvc

我正在使用eclipse和tomcat服务器制作java webapplication.我想知道当我在Tomcat上运行我的网站时会发生什么?Eclipse在后台运行tomcat上的应用程序有哪些步骤.

这将帮助我了解何时关闭服务器(在调试时)/何时清理服务器等.

我需要知道服务器的内容,以便我可以更好地进行调试.

现在我所做的就是每当出现问题时重启服务器.我浪费了足够的时间做这件事.我想我需要花更多的时间来了解幕后发生的事情.

Pav*_*ral 16

环境假设

我会假设:

  • target/classes 是已编译类的目标文件夹
  • src/main/webapp 是Web应用程序内容文件夹
  • Project > Build Automatically 选项已选中

部署目录

Eclipse正在使用爆炸的WAR部署 - 即部署的应用程序部署为文件夹,而不是单个文件存档.放置和加载应用程序文件${workspace}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/.

出版

发布是一个中心过程,负责组装和部署Web应用程序.在谈论本地Tomcat时,这意味着将"Web内容,已编译的类,库,......"复制到部署目录(中的那个.metadata)中.

Eclipse能够进行部分发布 - 即当单个资源发生更改时(例如某些JSP),Eclipse将只发布该单个文件.

默认情况下,在某些资源更改时会自动执行发布过程.这可以在服务器设置中修改(双击Servers视图中的服务器名称).

发布设置

更改静态资源

如果你改变让我们说src/main/webapp/resources/myApp/css/main.css:

  • 发布该文件被复制到部署文件夹
  • 资源可立即供服务器客户端使用

更改JSP文件

如果您更改JSP文件:

  • 发布该文件被复制到部署文件夹
  • Tomcat注意到JSP文件已更改并重新编译它
  • 已更改的JSP已准备好呈现内容

更改Java文件

如果更改java源文件:

  • 文件被编译成 target/classes
  • 发布该文件被复制到部署文件夹
  • Tomcat 注意到类文件已更改并重新加载上下文(即重新启动Web应用程序)

您可以在"模块"选项卡上的服务器设置中启用自动重新加载功能.如果没有自动重新加载,您仍然可以使用热插拔功能,该功能可以替换运行JVM中的代码.仅当方法签名未更改时,才可以执行此操作.

自动重新加载功能

如果你需要更高级的解决方案(即不仅仅是改变一个方法体),那么在重新加载java更改时,你应该检查像JRebel这样的项目(不是免费的).

清洁的

部署的应用程序可能会损坏.值得注意的是,当您想要清理完全编译和发布的资源时,您应该:

  • 清理已编译的类(Project > Clean...- 删除target/classes)
  • 清理已部署的文件(Server > Clean...- 删除部署文件夹)
  • 清理Tomcat工作目录(Server > Clean Tomcat Work Directory...- 删除已编译的JSP)