锁定老帖子 主题:Jetty6的架构
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-24
最后修改:2011-08-24
本文来自官方文档的翻译,我加了代码进行说明。 Jetty6的架构
//1:定义server Server server = new Server(); //2:把连接器集合放到server里 Connector connector=new SelectChannelConnector(); connector.setPort(8080); server.setConnectors(new Connector[]{connector}); //3:并把处理器集合放到server里 Handler param=new ParamHandler(); Handler hello=new HelloHandler(); HandlerCollection handlers = new HandlerCollection(); handlers.setHandlers(new Handler[]{param,hello}); server.setHandler(handlers); //4:启动server server.start(); server.join(); 模式
Connectors
连接器表示协议的处理者,负责解析请求并生成响应。不同类型的连接器在其基于的协议下有效,如调度模型和IO API的使用: •SocketConnector - for few busy connections or when NIO is not available. connectors的使用代码 Connector connector=new SelectChannelConnector(); connector.setPort(8080); HandlersHandler组件负责处理接收到的请求. handler核心的API是handle方法:
public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException; 这个方法的实现可以处理请求,传递请求到另外一个处理器(或者servlet),或修改并包装请求并传递出去。有三种类型的处理器:
Handler代码如下 Handler handler=new HelloHandler(); server.setHandler(handler); public static class HelloHandler extends AbstractHandler { public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest(); base_request.setHandled(true); response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("<h1>Hello OneHandler</h1>"); } } ServletsContextContexts是一种处理器,负责组织其他特定URI上下文路径或者一个虚拟机的处理器。通常情况下一个上下文必须有:
上下文实现包括:
Context示意代码: ContextHandler context = new ContextHandler(); context.setContextPath("/"); context.setResourceBase("."); context.setClassLoader(Thread.currentThread().getContextClassLoader()); server.setHandler(context); Web Applications
WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/"); webapp.setWar(jetty_home+"/webapps/test"); webapp.setDefaultsDescriptor(jetty_home+"/etc/webdefault.xml"); server.setHandler(webapp); 参考资料
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-26
现在都用上jetty7了吧。
LZ重心可以转移一下了 |
|
返回顶楼 | |
浏览 3855 次