Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Eclipse中在tomcat上运行应用程序时会发生什么_Eclipse_Tomcat_Spring Mvc - Fatal编程技术网

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

在Eclipse中在tomcat上运行应用程序时会发生什么,eclipse,tomcat,spring-mvc,Eclipse,Tomcat,Spring Mvc,我正在使用eclipse和tomcat服务器制作一个java Web应用程序。我想知道当我在Tomcat上运行我的网站时会发生什么?Eclipse在后台执行哪些步骤来在tomcat上运行应用程序 这将帮助我了解何时关闭服务器(调试时)/何时清理服务器等 我需要知道进入服务器的内容,以便更好地进行调试 现在我所做的就是在每次出现问题时重新启动服务器。我已经浪费了足够多的时间做那件事了。我想我需要多花一点时间来理解幕后发生的事情。环境假设 我将假定: target/classes是编译类的目标文件

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

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

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

现在我所做的就是在每次出现问题时重新启动服务器。我已经浪费了足够多的时间做那件事了。我想我需要多花一点时间来理解幕后发生的事情。

环境假设 我将假定:

  • target/classes
    是编译类的目标文件夹
  • src/main/webapp
    是web应用程序内容文件夹
  • 项目>自动生成
    选项已选中
部署目录 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更改时需要更高级的解决方案(即不限于仅更改一个方法体),那么应该检查(而不是免费的)项目

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

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

在服务器配置中,您可以告诉Eclipse是希望它使用自己的内部Tomcat实例还是您已经安装的实例。关于配置的完整讨论超出了SO的范围,但是您应该看看Eclipse文档、“服务器”配置对话框,以及我只需要一些关于Eclipse如何在tomcat服务器上运行代码的大致步骤。您看过我在之前的评论中链接的FAQ了吗?是的,我看过。它回答了以下问题:1。在更改jsp/静态文件时,当服务器已经运行时,不需要重新启动服务器,对于其他服务器,最好重新启动。但是,对我在eclipse上运行时发生的事情有一个更高层次的理解会更好。一个查询是否会在内部重新启动服务器?