码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-03 02:41:13      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:jetty   web应用   框架   

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文件。

Jetty端口配置实例

下面是一个例子用于测试Jetty配置机制,展示怎样设置HTTP端口。为了运行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实例。

Jetty学习二:配置概览-怎么配置Jetty,布布扣,bubuko.com

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

标签:jetty   web应用   框架   

原文地址:http://blog.csdn.net/liuy_98_1001/article/details/27544671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!