我正在使用eclipse和tomcat服务器创建一个java web应用程序。我想知道当我在Tomcat上运行我的网站时会发生什么? Eclipse在后台运行tomcat上的应用程序的步骤是什么。
这将帮助我了解何时关闭服务器(调试时)/何时清理服务器等。
我需要知道服务器的内容,以便我可以更好地进行调试。
现在我所做的就是每次出错时都重启服务器。我浪费了足够的时间做这件事。我想我需要花更多的时间来了解幕后发生的事情。
答案 0 :(得分:16)
我会假设:
target/classes
是已编译类的目标文件夹src/main/webapp
是网络应用程序内容文件夹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文件:
如果您更改了java源文件:
target/classes
您可以在“模块”选项卡上的服务器设置中启用自动重新加载功能。如果没有自动重新加载,您仍然可以使用hot swap功能,该功能可以替代运行JVM中的代码。仅当方法签名未更改时才可以这样做。
如果在重新加载java更改时需要更高级的解决方案(即不仅限于更改方法体),则应检查JRebel之类的项目(非免费)。
已部署的应用程序可能已损坏。值得注意的是,当您想要清理完全编译和发布的资源时,您应该:
Project > Clean...
- 删除target/classes
)Server > Clean...
- 删除部署文件夹)Server > Clean Tomcat Work Directory...
- 删除已编译的JSP)