Jetty 介绍


Jetty是Java领域另一个出色的Web服务器,它同样也是开源的。与tomcat不同的是它可作为一个嵌入式服务器。也就是说,如果我们在应用中加 入jetty的核心jar文件,应用即可对外提供http服务。它同时也是平台无关的java web服务器,既可以在Windos平台上运行,也可以在Linux平台上运行。

大家可以登录http://jetty.codehaus.org/jetty/站点下载Jetty的最新版本。下载的zip文件也是与平台无关的压缩包,不管是windows还是Linux都可使用。

将下载的安装zip包,解压缩到任意的路径下。运行Jetty需要使用如下命令:

cd D:\jetty
D:
java -jar start.jar

建议将上面的命令写成脚本,在windows下可写成批处理命令,在linux下可写成shell脚本。每次运行执行该文件就可以了。

运行成功后,启动浏览器,然后输入http://localhost:8080/回车,看看是否成功。如果不成功首先要保证端口8080是否被占用,真的被占用那就配置一下Jetty的端口,下面会介绍的。

1.Jetty的基本配置

主要介绍Jetty的端口设置,以及如何部署Web应用,Jetty是一个嵌入式的Http服务器,因此配置方式还是与tomcat有一些差异的:

Jetty的配置文件都会在etc的目录下,熟悉linux的目录的人应该很眼熟,呵呵。该目录下有如下几类配置文件:

  1. jetty.xml:该文件是Jetty的默认配置文件,Jetty的端口号也是在这个文件里设置的。

  2. jetty-xxx.xml:该文件是为了给Jetty增加扩展应用所用的配置文件。

  3. webdefault.xml:该文件是Web应用的默认配置文件,用于控制Jetty容器里所有Web应用的通用属性,该文件不可以修改。

Jetty服务器提供HTTP服务的主类是org.mortbay.jetty.Server,所以etc路径下的文件都需要为org.mortbay.jetty.Server配置属性。如下所示:

<Configure id="Server" class="org.eclipse.jetty.server.Server">    
 <!-- =========================================================== -->  
    <!-- Set connectors                                              -->  
    <!-- =========================================================== -->  

    <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="8080"/></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>  

Jetty的配置文件非常巧妙,它通过配置文件来新建对象(New元素),调用对象的方法(Call元素),设置属性(Set元素控制)。实际 上,Jetty底层将会根据配置文件中的信息,使用反射来创建对象,设置属性和调用方法。由此可见,如果我们需要在应用程序中嵌入Jetty服务器,只需 要创建org.mortbay.jetty.Server对象,并调用一些列方法即可。

2.部署Web应用

Jetty同样也有两种方式部署Web应用:

1)自动部署:将Web应用复制到Jetty的webapps的路径下,Jetty就会吧该Web应用自动部署到Jetty服务器中。

2)利用配置文件部署:新增配置文件来部署Web应用,这种方式无需将web应用放置到webapps路径下。

自动部署就不多说了,利用配置文件部署,既是进入Contexts目录,该目录下的所有文件都会被系统自动加载,并且根据这些配置文件来部署应用。该路径下默认有两个文件:

1)javadoc.xml:负责部署java的API应用;

2)test.xml:负责部署jetty的实例应用。

复制test.xml文件,将文件名改为项目名称。并对复制文件进行修改:

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Required minimal context configuration :                        -->
<!--  + contextPath                                                  -->
<!--  + war OR resourceBase                                          -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/new</Set>

上面的两行分别制定了Web应用的虚拟路径和文档路径,增加了该配置文件以后,jetty启动时将会自动把new路径下的web应用部署在服务器中。如果要删除该web应用就直接删除该配置文件即可。

3.配置JNDI绑定

Jetty同样可以整合DBCP,C3P0等数据源的实现,想外界提供容器管理的数据源。实际上,对外界提供容器管理的数据源,只是Jetty的JNDI的绑定功能之一。

Joyce /
Published under (CC) BY-NC-SA in categories jetty  tagged with jetty