Hadoop的砖块们--第2章 HttpServer, Jetty, Servlet
2013-12-01 13:14
429 查看
1.HttpServer类的代码在core/org/apache/hadoop/http/HttpServer.java
2.哪里用到了HttpServer?
NameNode,DataNode,JobTracker,TaskTrackr都用到了HttpServer。
3.以DataNode节点为例进行说明。
DataNode类定义了HttpServer的实例:
privateHttpServer infoServer = null;
HttpServer的创建,设置,运行,停止流程:
4.HttpServer是对Jetty的简单封装。
5.Jetty的开发
5.1安装Jetty
5.1.1操作系统是Linux,安装JavaJDK。
5.1.2下载Jetty
http://download.eclipse.org/jetty/7.6.12.v20130726/dist/
把压缩包解压缩到任意一个目录,诸如“/home/brian/usr/jetty/jetty-7.6”。
5.1.3运行
在/home/brian/usr/jetty/jetty-7.6目录下执行命令”java-jar start.jar ”
然后在浏览器地址栏输入”localhost:8080”,即可看到jetty的web界面。
5.2嵌入式的Jetty开发
Jetty可以作为单独的进程运行,也可以作为嵌入式的方式进行。Hadoop以嵌入式的方式运行Jetty,封装成HttpServer。
参考文档:http://www.eclipse.org/jetty/documentation/current/advanced-embedding.html
这个文档有点小毛病,下载的路径有问题,建议按照如下方式进行:
JavaJDK是1.7_u45版本。
jetty是最新的9.1.0版本。
HelloWorld.java源代码如下:
编译:javac-cp servlet-api.jar:jetty-all.jar *.java
运行:java-cp .:servlet-api.jar:jetty-all.jar HelloWorld
然后在浏览器地址栏输入”localhost:8081”,然后回车,即可看到“HelloWorld”。
Jetty的其他文档有更详细地说明了嵌入式开发的各种功能。
Jetty是servlet的容器。
6.Servlet是什么
http://www.ibm.com/developerworks/cn/java/j-lo-servlet/
Servlet是JavaWeb技术的核心基础。
http://www.ibm.com/developerworks/cn/education/java/j-intserv/index.html
http://www.iteye.com/topic/766418
2.哪里用到了HttpServer?
NameNode,DataNode,JobTracker,TaskTrackr都用到了HttpServer。
3.以DataNode节点为例进行说明。
DataNode类定义了HttpServer的实例:
privateHttpServer infoServer = null;
HttpServer的创建,设置,运行,停止流程:
this.infoServer= newHttpServer("datanode", infoHost, tmpInfoPort,tmpInfoPort == 0, conf, SecurityUtil.getAdminAcls(conf,DFSConfigKeys.DFS_ADMIN)) this.infoServer.addSslListener(secInfoSocAddr,sslConf, needClientAuth); this.infoServer.addInternalServlet(null,"/streamFile/*", StreamFile.class); this.infoServer.addInternalServlet(null,"/getFileChecksum/*", FileChecksumServlets.GetServlet.class); this.infoServer.setAttribute("datanode",this); this.infoServer.setAttribute("datanode.blockScanner",blockScanner); this.infoServer.setAttribute(JspHelper.CURRENT_CONF,conf); this.infoServer.addServlet(null,"/blockScannerReport", DataBlockScanner.Servlet.class); this.infoServer.start(); … this.infoServer.stop(); |
5.Jetty的开发
5.1安装Jetty
5.1.1操作系统是Linux,安装JavaJDK。
5.1.2下载Jetty
http://download.eclipse.org/jetty/7.6.12.v20130726/dist/
把压缩包解压缩到任意一个目录,诸如“/home/brian/usr/jetty/jetty-7.6”。
5.1.3运行
在/home/brian/usr/jetty/jetty-7.6目录下执行命令”java-jar start.jar ”
然后在浏览器地址栏输入”localhost:8080”,即可看到jetty的web界面。
5.2嵌入式的Jetty开发
Jetty可以作为单独的进程运行,也可以作为嵌入式的方式进行。Hadoop以嵌入式的方式运行Jetty,封装成HttpServer。
参考文档:http://www.eclipse.org/jetty/documentation/current/advanced-embedding.html
这个文档有点小毛病,下载的路径有问题,建议按照如下方式进行:
mkdir Demo cd Demo wget -O jetty-all.jar -U none http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/9.1.0.v20131115/jetty-all-9.1.0.v20131115.jar http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/ wget -O servlet-api.jar -U none http://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar[/code] |
jetty是最新的9.1.0版本。
HelloWorld.java源代码如下:
import java.io.IOException; importorg.eclipse.jetty.server.Request; importorg.eclipse.jetty.server.Server; importorg.eclipse.jetty.server.handler.AbstractHandler; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; public class HelloWorldextends AbstractHandler{ @Override public void handle(Stringtarget, Request baseRequest, 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("<h1>HelloWorld</h1>"); } public static voidmain(String[] args)throws Exception{ Server server = newServer(8081); server.setHandler(newHelloWorld()); server.start(); server.join(); } } |
运行:java-cp .:servlet-api.jar:jetty-all.jar HelloWorld
然后在浏览器地址栏输入”localhost:8081”,然后回车,即可看到“HelloWorld”。
Jetty的其他文档有更详细地说明了嵌入式开发的各种功能。
Jetty是servlet的容器。
6.Servlet是什么
http://www.ibm.com/developerworks/cn/java/j-lo-servlet/
Servlet是JavaWeb技术的核心基础。
http://www.ibm.com/developerworks/cn/education/java/j-intserv/index.html
http://www.iteye.com/topic/766418
相关文章推荐
- Servlet容器之Jetty的安装和配置(Windows)
- 使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef
- adoop in Action] 第2章 初识Hadoop
- Intellij Idea社区版 上使用maven构建并使用插件jetty和tomcat运行servlet
- 内嵌 jetty http/servlet 代码嵌入 jetty
- Jetty之servlet容器(2011.11.09)
- jetty的servlet请求路由与ContextHandlerColleection的实现
- Jetty实战之 嵌入式Jetty运行Servlet
- 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章
- Jetty实战之 嵌入式Jetty运行Servlet
- Maven+Jetty+HttpClient测试Servlet
- [How Tomcat Works]第2章 一个简单的Servlet容器
- 第2章 2.10 Servlet介绍
- android上的i-jetty (2)用Servlet显示Android设备的app列表
- 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章
- Tomcat的ServletAPI与Jetty的不能混用,否则会出现Serlvt类无法编译
- Servlet容器之Jetty的安装和配置(Windows)
- 使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef
- hadoop 的web接口是jetty
- Java使用Jetty实现嵌入式Web服务器及Servlet容器