Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Java 将tomcat和eclipse集成为热部署环境_Java_Eclipse_Tomcat - Fatal编程技术网

Java 将tomcat和eclipse集成为热部署环境

Java 将tomcat和eclipse集成为热部署环境,java,eclipse,tomcat,Java,Eclipse,Tomcat,我希望以集成的方式设置eclipse和tomcat,以便在不需要部署的情况下立即反映对JSP和servlet(如果可能)的更改 好的,这是一个在互联网上有很多答案的问题,但它们看起来都不一样。(使用Sysdeo插件,使用JBOss插件,处理过时的Eclipse,改用MyEclipse等等),我找不到一个明确的参考资料。那么,为了我的利益,什么是最简单和最推荐的设置程序 这假设eclipse和tomcat独立运行。实际上,我已经使用以下说明以非热部署方式成功地集成了它们: Eclipse版本:3

我希望以集成的方式设置eclipse和tomcat,以便在不需要部署的情况下立即反映对JSP和servlet(如果可能)的更改

好的,这是一个在互联网上有很多答案的问题,但它们看起来都不一样。(使用Sysdeo插件,使用JBOss插件,处理过时的Eclipse,改用MyEclipse等等),我找不到一个明确的参考资料。那么,为了我的利益,什么是最简单和最推荐的设置程序

这假设eclipse和tomcat独立运行。实际上,我已经使用以下说明以非热部署方式成功地集成了它们:

Eclipse版本:3.4.2(Ganymede)
TomcatV6.0.20

最简单、最快速:将Eclipse设置为在构建时生成WAR文件;作为构建后的一个步骤,将WAR文件复制到tomcat webapps目录中。Tomcat将识别更改并刷新站点,而无需部署。注意,这并不完美;使用该webapp的用户可能会有一种不太理想的体验,因为Tomcat会在“他们”下重新启动webapp;但这确实符合您的要求。

免责声明:我只是一个快乐的客户,我不为零周转工作,也不与他们有任何关联

签出-它允许您在不重新启动web应用程序的情况下编写代码。它基本上是通过检测类并调整它们的更改来工作的。它处理的问题包括:

  • 添加/删除方法
  • 添加/删除构造函数
  • 改变接口
  • 添加/删除已实现的接口
它是,(,$550/年,截至2018年6月),并且它有很多第三方框架,包括:

  • 圭斯
  • 弹簧
  • 支柱2

你会得到一个非常无痛的机会——我建议你试试

在您的开发环境中,只需让Tomcat服务器在您开发JSP的任何目录中查找JSP即可。保存文件后,您将能够看到更改。

您是否愿意使用Jetty进行开发


如果是这样的话,Maven使用起来非常简单——只需运行

就可以让eclipse直接将类文件写入$TOMCAT/webapps/MyWebApp/WEB\u INF/classes目录。然后,配置ApacheTomcat以检查类文件是否已更新,如果已更新,则重新加载它们

要将tomcat配置为在类更改时自动重新加载类,您需要

编辑
$TOMCAT/conf/context.xml
并设置:


您可能还需要编辑并重新加载
webapps/$YourWebApp/web.xml
文件,包括:


我不记得是否需要两个更改,但我就是这样配置的
我的tomcat-6.0.18可以自动重新加载。

这可能不是最好的方法,但它对我很有用

  • $tomcat/conf/Catalina/localhost/.xml
  • $contextPath/webapp/web/web-INF/lib/*.jar
  • $contextPath/webapp/web/
  • $eclispeWorkbench/projectservlet/src/
  • $eclispeWorkbench/project servlet/servlet.jardesc(应将jar导出到$contextPath中的lib dir)
  • $eclipseWorkbench/project jsp/
我使用rsync命令将jsp项目中的更改同步到$contextPath


在Eclipse for Tomcat中使用远程调试,这将允许有限的代码热交换。如果更改静态字段或添加方法,则需要导出jar并重新启动上下文。

将Eclipse中的工作区更改为\tomcat\webapps
因为这只是为了你的工作,这应该很好。您在Eclipse中所做的任何更改都在同一个目录中,tomcat寻找要部署的应用程序

如果只是为了开发,为什么不在Eclipse中使用集成的tomcat服务器呢?您可以在窗口->首选项下配置服务器。一旦配置好它,若您有一个名为page.jsp的jsp,您可以右键单击它并选择RunonServer。在“首选项->常规->Web浏览器”下,您可以选择天气以使用内置浏览器或外部浏览器。在浏览器中对jsp进行一些更改、保存和刷新页面。保存并刷新浏览器后,更改将自动反映。

有两个选项

首先,Eclipse允许您这样做,只需稍微更改配置(另请参见此)

  • 将Tomcat添加到服务器列表中
  • 使项目成为“动态web项目”(通过创建向导或通过设置中的facets部分)
  • 将项目添加到tomcat,并配置其“部署程序集”
  • 双击列表中的tomcat以打开配置
  • 将“发布”更改为“从不自动发布”(这意味着在按下ctrl+s键时服务器不会重新启动)
  • 在调试模式下启动tomcat
这仍将反映代码更改,但不会重新启动服务器

第二,我已经用了很长时间:

  • 配置插件将所有类从bin控制器发送到tomcat安装的
    WEB-INF/classes
    (这与配置部署程序集几乎相同)
  • 配置所有其他资源以转到其各自的位置
  • (可选)将从文件同步位置设置到单个变量的所有绝对路径外部化,并在eclipse中配置该变量(因此,如果所有成员都在使用eclipse,您也可以提交文件同步设置)
  • 将Tomcat添加到eclipse中的服务器列表中,将“服务器位置”选项配置为“使用Tomcat安装”(双击服务器列表中的Tomcat时屏幕打开)
  • 在调试模式下启动tomcat
这样对我来说非常合适。每一个非结构性变化都会立即反映出来,而无需重新部署

更新:
您可以阅读更多关于
<Context path="/myapp" docBase="myapp" debug="5"
    reloadable="false" antiResourceLocking="false" antiJARLocking="true">
<!-- this because i´m using Spring 3.1 with Tomcat -->
    <Loader     loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" />

</Context>