在编辑代码时,如何让eclipse实时更新Jetty代码?

时间:2012-05-24 03:20:42

标签: java eclipse jetty

当我在eclipse中使用Tomcat并让我的Web应用程序通过eclipse运行时,对Java类或JSP页面的任何更改似乎都会被直接推送到tomcat而无需重新启动tomcat或应用程序。

有没有办法在eclipse下配置Jetty,以便它以相同的方式工作?到目前为止,我似乎只能进行代码更改,然后手动重启jetty。

1 个答案:

答案 0 :(得分:0)

配置jetty.xml以使用ContextDeployer,它启用"热部署"。这可能已经默认配置。基本上,Jetty以预定的间隔扫描contexts文件夹。如果它检测到WAR文件或war目录已更改,则会自动重新加载上下文。

在下面的示例中,$ {jetty.home} / contexts文件夹配置为查找告诉Jetty要监视哪些Web应用程序的上下文XML文件。 scanInterval设置为5毫秒,这意味着Jetty每5毫秒检查一次更改。您将在jetty.xml中找到此配置:

<!-- =========================================================== -->
<!-- Configure the context deployer                              -->
<!-- A context deployer will deploy contexts described in        -->
<!-- configuration files discovered in a directory.              -->
<!-- The configuration directory can be scanned for hot          -->
<!-- deployments at the configured scanInterval.                 -->
<!--                                                             -->
<!-- This deployer is configured to deploy contexts configured   -->
<!-- in the $JETTY_HOME/contexts directory                       -->
<!--                                                             -->
<!-- =========================================================== -->
<Call name="addLifeCycle">
  <Arg>
    <New class="org.mortbay.jetty.deployer.ContextDeployer">
      <!-- the ContextHandlerCollection to modify once a webapp is added or removed (Allows Hot Deployment) -->
      <Set name="contexts"><Ref id="Contexts"/></Set>

      <!-- the directory which will contain your context.xml files -->
      <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>

      <!-- the interval in milliseconds to periodically scan the configurationDir -->
      <Set name="scanInterval">5</Set>
    </New>
  </Arg>
</Call>

您还需要创建WebAppContext条目。将其放在名为test.xml的文件中,并将该文件放在/ contexts目录中:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="contextPath">/test</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set>
</Configure>

请注意,<Set name="war">是指实际文件夹,不是WAR文件。此文件夹应包含应用程序的根目录,例如/ WEB-INF文件夹和所有其他文件。

如果您希望立即识别JSP和其他页面,则需要在webapps文件夹中配置Web应用程序以从爆炸的WAR运行,而不是WAR文件本身。之后,您需要将Eclipse指向此位置,以便您实际上直接从webapps / test文件夹修改和编译文件。

总之,您不清楚您正在运行哪个版本的Jetty。但是,虽然Jetty配置可能因版本而异,但这应该可以帮助您入门。有关Jetty配置和故障排除的更多文档,请参阅Jetty WebsiteWebtide website

一切配置正确后,您可以直接从该文件夹修改和编译代码,而无需重新启动Jetty。

该规则的唯一例外是针对修改web.xml的情况。如果修改web.xml,则很可能需要重新启动Jetty。

最后请注意,请确保不要在webapps文件夹中部署任何名为test.war的WAR文件,除非您首先禁用WAR文件的爆炸。您最终可能会覆盖您的代码!

如果您需要其他指导,可能会发现此Jetty Documentation on ContextDeployers有用,以及Deploying a Webapp to Jetty。祝你好运!