要明白jetty的配置,你需要先明白“如何做”和“怎么做”,这一节介绍如何配置jetty在什么样的机制下去执行配置,下一节介绍你如何配置这些机制。
jetty的核心组件是简单传统的JAVA对象(POJO),配置jetty的过程其实就是实例化对象的过程。
因为jetty配置文件是通过Ioc完成的,Jetty API文档是最标准的配置参考。
ini files
jetty启动采用命令行的方式。 $JETTY_BASE/start.ini 或 $JETTY_BASE/start.d/.ini 文件去创建有效参数的命令行。参数可能是:
ini文件位于jetty的安装地址(如果jetty home不同),通过编辑去更改配置(例如,修改端口)。
$JETTY_HOME/modules/.mod文件包含模块的定义,可以通过- -module=name激活使用,每个模块文件的定义如下:
通常模块文件很少编辑,只有重大的结构性变化才会修改。.mod文件通常放在$JETTY_HOME/modules/,但是额外的和编辑过的模块可能在$JETTY_BASE/module。如果需要模块改动,最好在修改之前,从$JETTY_HOME/modules/复制到$JETTY_BASE/modules/目录,在修改。
XML files
Jetty IoC XML格式或spring IoC格式的XML文件有2种,在ini文件或通过模块定义增加命令行。XML文件和Java对象组成了服务器,连接器和环境。因为Jetty IoC XML文件使用属性,最常见的配置可以在不修改这些XML文件来完成,而是可以通过编辑相应的ini文件属性来实现。
这些XML文件通常位于 $JETTY_HOME/etc/,额外或编辑的XML文件可以添加到 $JETTY_BASE/etc/.如果配置需要改变,最好先从$JETTY_HOME/etc/ 复制到 $JETTY_BASE/etc/,在进行修改。
web.xml
Servlet规范定义了定义和配置Web应用程序使用的过滤器,servlet和资源web.xml部署描述符。Jetty WebAppContext组件使用这种XML格式:
Property Files
标准的Java属性文件也用于jetty配置
package org.eclipse.jetty.embedded;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
public class ExampleServer {
public static void main(String[] args) throws Exception {
Server server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setPort(8080);
server.setConnectors(new Connector[] { connector });
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addServlet(HelloServlet.class, "/hello");
context.addServlet(AsyncEchoServlet.class, "/echo/");
HandlerCollection handlers = new HandlerCollection();
handlers.setHandlers(new Handler[] { context, new DefaultHandler() });
server.setHandler(handlers);
server.start();
server.join();
}
}
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="ExampleServer" class="org.eclipse.jetty.server.Server">
<Set name="connectors">
<Array type="org.eclipse.jetty.server.Connector">
<Item>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg><Ref refid="ExampleServer"/></Arg>
<Set name="port">8080</Set>
</New>
</Item>
</Array>
</Set>
<New id="context" class="org.eclipse.jetty.servlet.ServletContextHandler">
<Set name="contextPath">/hello</Set>
<Call name="addServlet">
<Arg>org.eclipse.jetty.embedded.HelloServlet</Arg>
<Arg>/</Arg>
</Call>
</New>
<Set name="handler">
<New class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<Ref refid="context" />
</Item>
<Item>
<New class="org.eclipse.jetty.server.handler.DefaultHandler" />
</Item>
</Array>
</Set>
</New>
</Set>
</Configure>
在实践中,最常用的是在etc目录中的标准XML文件,因此,配置jetty通常只需要修改存在的XML文件和修改它们注入的属性值。