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?
?
?
? ? ? ?2)具体后端的处理类,connector负责通信调度,这个负责处理!?
? ? ? ? ? <Set name="handler"> ? ? ? ? ?
? ? ? ? ? ?<New id="Handlers" default="."/>/contexts</Set>
? ? ? ?4)默认配置的webapps 目录, 若是想自己部署的话,需要修改这个值
? ? ? ? ?<Call name="addLifeCycle">
? ? ? ? ? <Arg>
? ? ? ? ? ? <New 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中添加包依赖
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月就想折腾下,谁知道拖到现在!
?