当我在eclipse中使用Tomcat并让我的Web应用程序通过eclipse运行时,对Java类或JSP页面的任何更改似乎都会被直接推送到tomcat而无需重新启动tomcat或应用程序。
有没有办法在eclipse下配置Jetty,以便它以相同的方式工作?到目前为止,我似乎只能进行代码更改,然后手动重启jetty。
答案 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 Website或Webtide website。
一切配置正确后,您可以直接从该文件夹修改和编译代码,而无需重新启动Jetty。
该规则的唯一例外是针对修改web.xml的情况。如果修改web.xml,则很可能需要重新启动Jetty。
最后请注意,请确保不要在webapps文件夹中部署任何名为test.war的WAR文件,除非您首先禁用WAR文件的爆炸。您最终可能会覆盖您的代码!
如果您需要其他指导,可能会发现此Jetty Documentation on ContextDeployers有用,以及Deploying a Webapp to Jetty。祝你好运!