我正在使用 eclipse 和 tomcat 服务器制作一个 java web 应用程序。我想知道当我在 Tomcat 上运行我的网站时会发生什么?Eclipse 在后台执行哪些步骤以在 tomcat 上运行应用程序。
这将帮助我了解何时关闭服务器(调试时)/何时清理服务器等。
我需要知道进入服务器的内容,以便更好地调试。
现在我所做的就是每次出现问题时重新启动服务器。我已经浪费了足够多的时间了。我想我需要花更多的时间来了解幕后发生的事情。
我正在使用 eclipse 和 tomcat 服务器制作一个 java web 应用程序。我想知道当我在 Tomcat 上运行我的网站时会发生什么?Eclipse 在后台执行哪些步骤以在 tomcat 上运行应用程序。
这将帮助我了解何时关闭服务器(调试时)/何时清理服务器等。
我需要知道进入服务器的内容,以便更好地调试。
现在我所做的就是每次出现问题时重新启动服务器。我已经浪费了足够多的时间了。我想我需要花更多的时间来了解幕后发生的事情。
我会假设:
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 将仅发布该单个文件。
默认情况下,当某些资源发生变化时,会自动执行发布过程。这可以在服务器设置中修改(双击服务器视图中的服务器名称)。
如果你改变让我们说src/main/webapp/resources/myApp/css/main.css
:
如果更改 JSP 文件:
如果更改 java 源文件:
target/classes
您可以在“模块”选项卡上的服务器设置中打开自动重新加载功能。如果没有自动重新加载,您仍然可以使用热交换功能,它能够替换正在运行的 JVM 中的代码。这只有在方法签名没有改变时才有可能。
如果您在重新加载 java 更改时想要更高级的解决方案(即不仅限于更改方法主体),您应该检查JRebel 之类的项目(不是免费的)。
部署的应用程序可能会损坏。值得注意的是,当你想清理完全编译和发布的资源时,你应该:
Project > Clean...
-删除target/classes
)Server > Clean...
- 删除部署文件夹)Server > Clean Tomcat Work Directory...
- 删除已编译的 JSP)