jetty的基本安装配置

外置容器

1.下载:

wget http://dist.codehaus.org/jetty/jetty-6.1.14/jetty-6.1.14.zip 

unzip jetty-6.1.14.zip

2.配置JETTY_HOME 

vim ~/.bashrc 

JETTY_HOME=/home/inter12/installs/dev/jetty
JETTY_CONF=$JETTY_HOME/etc
JETTY_LOGS=$JETTY_HOME/logs

export JETTY_HOME
export JETTY_CONF
export JETTY_LOGS
 

3.就可以启动了

cd $JETTY_HOME/bin

sh jetty.sh start   //启动

sh jetty.sh start   //查看是否正常启动 

其他常见的命令有:start|stop|run|restart|check|supervise

默认端口是8080,具体配置后面再说。

通过浏览器来看下:http://127.0.0.1:8080/ 就可以看到 jetty默认的欢迎页面了! 很简单,类似于 tomcat 

首页中提供了一些demo和一些常用说明,例如如何配置JNDI等信息! 

4.几个重要的目录

$JETTY_HOME/etc     配置文件   ----  tomcat 下的conf目录

   4.1 /etc/jetty.xml  这个为比较重要的配置文件。具体打开文件我们可以看:

       1)连接器 对外暴露的服务,其中包含了端口,最大等待时间等信息。提供了两种方式,默认是NIO的处理,若是不行的话,就去除下面的注释,启用性能稍微差点的BIO,目录下存在一个jetty-bio.xml目录,只需要使用这个即可! 

          <Call name="addConnector">    

           <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>

       2)具体后端的处理类,connector负责通信调度,这个负责处理! 

          <Set name="handler">          

           <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">

       3)配置上下文的路径,就是我们下面将会提到了 contexts目录的位置!

          <Call name="addLifeCycle">     

           <Arg>

            <New class="org.mortbay.jetty.deployer.ContextDeployer">

              <Set name="contexts"><Ref id="Contexts"/></Set>

              <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>

       4)默认配置的webapps 目录, 若是想自己部署的话,需要修改这个值

         <Call name="addLifeCycle">

          <Arg>

            <New class="org.mortbay.jetty.deployer.WebAppDeployer">

             <Set name="contexts"><Ref id="Contexts"/></Set>

             <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>

       5)请求日志的存放地址

           <Ref id="RequestLog">

            <Set name="requestLog">

       上面就是jetty.xml中几个重要的配置了!

----------------------------------------------------------------------------------------------------------------------- 

  4.2 etc/webdefault.xml  这个就是web.xml的默认实现 ! 也就是说若过你应用中没有web.xml的话,也可以启动! 前提是使用 bin/jetty.sh start 

  4.3 其他杂类 jetty-jaas.xml jetty-jmx.xml jetty-plus.xml jetty-ssl.xml jetty-ajp.xml 这些配置文件我想看名字大家都应该知道了!

----------------------------------------------------------------------------------------------------------------------- 

$JETTY_HOME/webapps 部署目录   ----  tomcat 下的webapps 

$JETTY_HOME/lib     包存放路径 ----  tomcat 下的lib目录

$JETTY_HOME/bin     配置脚本 最重要的就是jetty.sh 这个脚本了, start|stop|run|restart|check|supervise

$JETTY_HOME/contexts  webapp的上下文路径,这里可以将我们需要部署的WAR放到非 webapps目录下! 如果非要对应的话就是tomcat/service.xml中的<context/>这个配置项

$JETTY_HOME/logs   这个目录我想不说大家也应该知道

$JETTY_HOME/extras 因为 jetty是嵌入式的容器,所以能很容易的和其他框架或是容器结合(spring,jboss等!),具体就可看这个目录下的信息!

一般来说,具体到现实的应用中,我们不会去修改 jetty默认的一些配置项,都是通过替换代替的方式来完成配置文件的更换,具体就是4.1所提到的几个配置文件!

----------------------------------------------------------------------------------------------------------------------- 

内置容器

上面说的都是怎么利用JETTY作为WEB容器,其实我们还可以跟简单的方式将应用本身作为WEB容器,只需要继承JETTY的CORE包即可! 下面就用代码来实例下吧!

1.mvn archetype:generate 创建一个项目 选择231这一个 struts项目

2.在pom.xml中添加包依赖

	<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>6.1H.10</version>
	</dependency>
 

3.mvn eclipse:eclipse -DdownloadSources=true 刷新包 若是你的网速不行的话那么就把后面的 -DdownloadSources去掉,不要下载源码! 

4.那就敲代码吧

package com.inter12.xzm.jetty;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.ServletHolder;

public class MineJettyServer {

    public static void main(String[] args) throws Exception {
        MineJettyServer mineJettyServer = new MineJettyServer();
        mineJettyServer.start();
    }

    private void start() throws Exception {
        // 1.启动一个SERVER 并指定端口
        Server server = new Server(8080);

        // 2.设置应用的跟路径为 / 你也可以设置成自己需要的应用名字。例如我这个的应用是/jTest
        // Context context = new Context(server, "/jTest", Context.SESSIONS);
        Context context = new Context(server, "/", Context.SESSIONS);

        // 3.添加servlet. OKServlet就是我们具体处理业务的类!
        context.addServlet(new ServletHolder(new OKServlet()), "/ok.jsp");

        // 4.启动。收工,这样就搞定了内置 servlet容器!
        server.start();
    }

    class OKServlet extends HttpServlet {

        private static final long serialVersionUID = 1L;

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            PrintWriter writer = resp.getWriter();

            writer.write("success,welcome to ok.jsp!");
            writer.flush();
            writer.close();
        }

        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("do post method enter!");
        }

    }
}
 

访问地址:http://127.0.0.1:8080/ok.jsp    这样就可以看到输出的结果了!

若是根路径设置为 /jTest的话,路径为:http://127.0.0.1:8080/jTest/ok.jsp

好了,这样就完成了!

tips:

1.恰好最近也在看 lucene的源码,跟 jetty一对比的话,jetty的代码写的有点不优雅了,也可以说比较的粗糙,特别是在注释上!

2.也下了最新版本8.0版本,好像是迁移到 org.eclipse 下了,包结构和一些语法变的挺大!

3.jetty本来在今年6月就想折腾下,谁知道拖到现在!

猜你喜欢

转载自inter12.iteye.com/blog/1310429