Jetty 已迁移到 Eclipse。这方面有非常微妙的信息。这也导致了包名称的变化,这是另一个层次的细微差别。他们确实发布了一个工具来将 Jetty6 设置转换为 Jetty 7 设置,但同样 - 不是很受欢迎。我对 Eclipse Jetty 论坛感到失望。您应该在此处查找有关 Jetty 7 及更高版本的文档http://wiki.eclipse.org/Jetty/Starting
jetty.xml
我认为这是从http://wiki.eclipse.org/Jetty/Reference/jetty.xml中获取的最小值
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">\
<Configure id="Server" class="org.eclipse.jetty.server.Server">
</Configure>
但是,我宁愿从副本开始,$JETTY_HOME/etc/jetty.xml
然后从那里修改。
如果你对$JETTY_HOME/webapps
目录没问题,你可以通过修改这部分来设置端口
<Configure id="Server" class="org.eclipse.jetty.server.Server">
...
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="7777"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
....
</Configure>
否则,我将修改context.xml
此处解释的方式(对于 Jetty 7)如何从 portA 提供 webbapp A 和从 portB 提供 webapp B
另请参阅这些页面:
.... 编辑#1:对于每个连接器的 webapp 的错误 URL 感到抱歉。我已经更新了如何从 portA 为 webbapp A 和从 portB 提供 webapp B 的链接,以指向适用于 Jetty 7 的文档。
更新“您如何在各种环境中处理 Jetty?”
开发
我们使用 Maven,因此嵌入式 Jetty 适合我们。我们刚刚运行mvn clean install run:jetty
,端口在 Maven 的配置文件中配置,即pom.xml
. 这不依赖于 IDE,而且可以使用 ANT 轻松嵌入 Jetty,但我从未尝试过。
测试
我们有独立的 Jetty 运行。我已经配置了端口和调整参数,删除了默认应用程序(例如 root.war 等)并创建了一个带有应用程序特定端口和部署目录的 context.xml。(不幸的是,我在 Eclipse Jetty 的邮件列表中问过这个问题,但没人愿意回答)。这是一次设置。
对于测试构建/部署,我们有一个构建脚本,它根据测试环境规范构建 WAR,然后将其上传到测试环境。之后,我们调用一个 shell 脚本,该脚本 (1) 停止 Jetty,(2) 将 war 文件复制到 myApp 的 webapp 目录,以及 (3) 重新启动 Jetty。
然而,更简单的方法是使用 Maven 的 Cargo 插件。不幸的是,我使用的是与 Cargo 不兼容的 Jetty 7.1.6。后来他们修复了它,但我已经通过自定义脚本完成了我的工作。
产品
Prod 的程序与 test 几乎相同,除了。调整是为了更高的安全性和负载平衡。但是从部署 POV 来看,从 Test case 到 Prod 并没有什么不同。
请注意,我没有关心 XML 文件是什么以及必须有多少。我刚刚使用了我关心的那些 -jetty.xml
和context.xml
. 另外,我发现它在使用jetty.conf
和jetty.sh
传递 JVM 参数、自定义 XML 以及启动和停止方面要干净得多。
希望这可以帮助。
热部署:
现在,如果您使用 Maven 并使用嵌入式 Jetty。它只知道代码何时更改——比如“枪声嗅探器”。在 dev envt 中,您运行 Jetty,进行更改,刷新页面,并查看您的更改——热部署。在这里找到更多http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin寻找scanIntervalSeconds