设为首页 加入收藏

TOP

Jetty 9嵌入式开发
2015-02-02 14:44:42 来源: 作者: 【 】 浏览:20
Tags:Jetty 嵌入式 开发

官方网址:http://www.eclipse.org/jetty/


下载地址:http://download.eclipse.org/jetty/stable-9/dist/


文档网址:http://www.eclipse.org/jetty/documentation/


当前Jetty网址上推荐使用的稳定版本:Jetty9.0。


? ? ? Jetty9内容位于http://www.eclipse.org/jetty/documentation


? ? ? 直接链接:


http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html


? ? ? Jetty有一个标语,“不要部署你的应用在Jetty上,部署Jetty在你的应用中”。这意味着可选择使用Jetty捆绑你的应用作为一个标准WAR进行部署。Jetty设计成一个软件组件,可以实例化并且使用在Java程序中,例如:如何POJO。但是另外一种方法,以嵌入式模式运行Jetty,这意味着把HTTP模块放入到你的应用中,而不是把你的应用放入到HTTP服务中。


? ? ? 本教程引导你逐步从最简单的Jetty服务实例到使用标准部署描述运行多个Web应用。大部分示例的源代码是标准Jetty项目的一部分。


? ? ? 在学习该教程之前,完成一个HelloWorld教程是值得的。该教程可以在“嵌入式Jetty网络研讨会记录”中找到。


? ? ? Jetty版本:本教程的代码来自于Jetty7,但是也应该在Jetty 8中可以使用。对于最新的稳定版本,参考最新发行版的链接代码。可能与本教程中给出的代码例子有稍微的不同。


? ? ? 为了嵌入Jetty服务,通常执行下面的步骤:


? ? ? 1)创建一个服务


? ? ? 2)添加和配置连接器


? ? ? 3)添加和配置处理器


? ? ? 4)添加和配置Servlet、Webapp到处理器


? ? ? 5)启动服务


? ? ? 6)等待(join服务防止主线程退出)


? ? ? 下面的代码来自于SimplestServer.jar,实例化和运行一个最简单的Jetty服务


http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/embedded/SimplestServer.html


public class SimplestServer


{


? ?public static void main(String[] args) throws Exception


? ? {


? ? ? ?Server server = new Server(8080);


? ? ? ?server.start();


? ? ? ?server.join();


? ? }


}


? ? ? 在端口8080上运行一个HTTP服务。这不是非常有用的服务,因为它不处理,对于每个请求只是返回一个404错误。


? ? ? 为了生成请求的响应,Jetty要求在服务上设置一个Handler。一个处理器可能:


1) ?检查和修改HTTP请求


2)生成完整的HTTP详情


3)调用其他的处理器(参见HandlerWrapper)


4)选择一个或者多个处理器调用(参考HandlerCollection)


http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/server/handler/HandlerWrapper.html


Hello world处理器:


下面代码基于HelloHandler.java,显示一个简单的Helloworld处理器。


public classHelloHandler extends AbstractHandler


{


? ? public void handle(String target,RequestbaseRequest,HttpServletRequest request,HttpServletResponse response)


? ? ? ? throws IOException, ServletException


? ? {


? ? ? ? response.setContentType("text/html;charset=utf-8");


? ? ? ?response.setStatus(HttpServletResponse.SC_OK);


? ? ? ? baseRequest.setHandled(true);


? ? ? ?response.getWriter().println("

HelloWorld

");


? ? }


}


传递给handle方法的参数包括:


1) ?target - 请求的目标,它可以是一个URI或者命名分发器的名称


2) baseRequest – Jetty可变请求对象,它总是解包的


3) ?request - 不可变的请求对象,它可能已经被封装


4) response - 响应,它可能已经被封装


处理器设置请求的状态,内容类型,在使用writer生成请求体之前标注请求已经处理(后续就不再处理)。


下面的代码来自于OneHandler.java,显示Jetty服务如何使用该处理器。


public staticvoid main(String[] args) throws Exception


{


? ? Server server = new Server(8080);


? ? server.setHandler(new HelloHandler());


?


? ? server.start();


? ? server.join();


}


现在你知道基于Jetty编写一个HTTP服务所需要了解的所有东西。然而,复杂的请求处理通常使用多处理器构建。我们在后面章节中看看它是如何组合处理器的。你能查看Jetty的org.eclipse.jetty.server.handler包中有那些可用处理器。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Jetty Hello World 下一篇Java ClassLoader 基础

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: