• Jetty学习二:配置概览-怎么配置Jetty


    Jetty POJO配置

    Jetty的核心组件是Plain Old Java Objects(POJOs);配置Jetty的大部分工作就是在Jetty POJOs上的初始化、装配和设置域的处理,你能通过以下的方式来实现:
     1)直接通过Java代码初始化和装配Jetty对象。这个在后面Embedding Jetty讲。
     2)用Jetty XML配置(一个控制反转(IoC)框架)初始化和装配Jetty对象。etc/jetty.xml文件是基本的Jetty XML配置文件,但有一些其它的etc/jetty-feature.xml文件包括在jetty中。
     3)用第三方库IoC框架如Spring初始化和装配Jetty对象作为Spring beans。
    由于基本的Jetty配置通过IoC来做,因此Jetty API文档是终于的配置參考。

    Jetty Start配置文件

    Jetty用以下尾随的配置文件来初始化、注入和启动server:

    ini文件

     Jetty Start机制用命令行,start.ini文件和不论什么start.d/*.ini文件用于提供命令行參数,參数能够是:
     ------Jetty IoC(或者Spring)XML格式的XML文件
     ------模块激活,格式为:--module=name
     ------属性,格式为:name=value,用于Jetty IoC XML的參数
     ------标准Java属性文件,包括附加的启动属性
     ------其他start.jar选项(看java -jar start.jar --help)
     ------一些JVM选项
     ini文件放在jetty.base(假设不同于jetty.home),通过改动它们改变配置。

    mod文件

     modules/*.mod文件包括了模块的定义,这些模块能通过--module=name激活。每一个mod文件定义:
     ------为排序和激活定义的模块依赖
     ------须要被模块加入�到classpath的库
     ------须要被模块加入�到命令行的XML文件
     ------须要被激活模块的文件
     ------一个模板ini文件,当使用--add-to-start=name激活是使用
     mod文件通常被放在jetty.home,可是能够被jetty.base中的覆盖。通常非常少编辑模块文件除非大的结构改变。

    XML文件

     Jetty支持Jetty IoC和Spring IoC格式的XML文件,能够在命令行中指定,也能够在ini文件里指定,或者通过模块定义加入�到命令行中。XML文件实例化和注入Java对象,包含server、connectors和contexts。由于Jetty IoC XML文件常常使用properties,一些通常的配置任务不须要编辑这些XML文件就能完毕。假设XML配置被要求改变,XML文件应该从jetty.home/etc复制到jetty.base/etc,再做改动。

    其他配置文件

    服务端配置还能使用以下的文件:

    Context XML文件

    Jetty IoC或者Spring IoC格式的XML文件,放置在webapps目录下,部署模块用它来实例化和注入HttpContext实例以创建一个特定的context。

    Property文件

    Jetty配置支持标准Java property文件。

    Jetty IoC XML格式

    为了理解Jetty IoC XML格式,先看以下在Java代码中初始化和配置的样例:

    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;
    import org.eclipse.jetty.util.thread.QueuedThreadPool;
     
    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("/hello");
            context.addServlet(HelloServlet.class, "/");
            HandlerCollection handlers = new HandlerCollection();
            handlers.setHandlers(new Handler[] { context, new DefaultHandler() });
            server.setHandler(handlers);
            server.start();
            server.join();
        }
    }

    以下是上面的Java代码相应的使用Jetty IoC XML初始化和配置相同的server的样例:

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.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>

    在实践中,通常使用Jetty XML文件,一般放置在标准公布版本号的etc文件夹中。因此配置Jetty一般是编辑已经存在的XML文件,改变配置的值。

    配置Jetty公布版本号

    通常Jetty的公布版本号,包含以下的配置:

    $JETTY_HOME/start.ini

    全局命令行选项。从Jetty 9.1開始,start.ini的内容被移动到模块的start.d/下的ini文件里。

    $JETTY_HOME/start.d

    模块ini文件的目录,用于为Jetty modules设置OPTION、parameters和配置文件。这些modules能够通过重命名文件或者在9.1之后使用start.jar的--enable或者--disable选项来激活或者停止。

    $JETTY_HOME/lib/*.xml

    Jetty IoC XML文件,配置个体特性;如jetty.xml(为server),jetty-http.xml,jetty-https.xml,jetty-jmx.xml。

    $JETTY_HOME/webapps/*

    用于部署标准WAR文件、web应用和上下文IoC XML文件。

    Jettyport配置实例

    以下是一个样例用于測试Jetty配置机制,展示如何设置HTTPport。为了执行Jetty,我们通常执行以下的命令:

    	>java -jar start.jar

    start.d/http.ini模块默认被激活,当中包括以下的行:

    	--module=http
    	jetty.port=8080

    这里设置了Jetty端口(jetty.port),并激活了http模块(在modules/http.mod 文件里定义),http模块的配置文件为etc/jetty-http.xm,在这个配置文件里,调用server的addConnector加入�一个ServerConnector类的新实例,这个实例配置包括以下的行:
     <Set name="port"><Property name="jetty.port" default="80" /></Set>
    这行表示使用jetty.port属性值或者默认值80(假设没有配置jetty.port)调用ServerConnector.setPort(int)。jetty.port能够配置在start.ini或者http.ini中,仅仅能配置一次,这里http.ini中配置了jetty.port的值为8080,因此Jetty将用8080作为连接器的端口。
    假设你希望改变这个端口,那么你能够编辑start.d/http.ini文件,改变jetty.port的值。然而这样升级可能会导致问题,因此最好的做法是创建一个新的jetty.base目录,配置一个新的server实例。

  • 相关阅读:
    树上启发式合并_训练总结+题目清单
    Wannafly Day2 E 阔力梯的树(树上启发式合并)
    profile(/etc/profile)和bash_profile的区别
    MacOS配置.bash_profile,重启终端后配置失效和MacOS .zshrc does not exist问题
    Markdown入门学习202004
    把-图片的链接-下载到本地(服务器);
    前端Vue- v-for 循环中删除 元素;
    关于谷歌浏览器(Chrome)前端JS方法调用方法,运行顺序出错问题;
    国外的api之ASANA-java开发-ASANAAPI(真难!)
    vue脚手架3.x完整版
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3762277.html
Copyright © 2020-2023  润新知