hive启动web程序流程
1.通过hwi service启动hwi.sh,在hwi.sh中到lib目录下找到hwi.jar和hwi.war,并执行主类org.apache.hadoop.hive.hwi.HWIServer
2.在HWIServer中进入start方法,设置好host和port变量,默认为0.0.0.0:9999,通过
webServer = ShimLoader.getJettyShims().startServer(listen, port); webServer.addWar(hwiWARFile.toString(), "/hwi"); //hwiWARFile 为war包的文件名webServer.start(); webServer.join();
来启动jetty服务器。
3.ShimLoader为shims包中的common文件夹下的工具类,他通过反射来实例化工具类对象,这里实例化一个JettyShims对象。
JettyShims封装了对Jetty服务器的一些操作,可以根据不同的Hadoop的版本(一个HashMap)生成相应的操作实例。
public interface JettyShims { Server startServer(String listen, int port) throws IOException; /** * Server. * */ interface Server { void addWar(String war, String mount); void start() throws Exception; void join() throws InterruptedException; void stop() throws Exception; } }
这里我们一个Jetty20SShims实例为准,在startServer中我们先实例化一个Server对象,
private static class Server extends org.mortbay.jetty.Server implements JettyShims.Server
然后
public void setupListenerHostPort(String listen, int port) throws IOException {SocketConnector connector = new SocketConnector(); connector.setPort(port); connector.setHost(listen); this.addConnector(connector); }
至此,jetty服务器已经在指定的地址和端口启动了,OK.
使用JettyServer工具类进行测试。
public static void main(String[] args) throws Exception {
JettyServer js = new JettyServer();
js.setupListenerHostPort("localhost", 9999);
js.addWar("D:\\软件安装源程序\\Java\\eclipse_jee\\mywar.war", "/mywar");
js.start();
}
添加jetty-6.1.26.jar,jetty-util-6.1.26.jar,servlet-api-2.5-6.0.1.jar三个包,
此时可以即可访问启动的web程序了。
jetty7及以后版本由eclipse进行托管,使用方法有所改变。
<a href="http://download.eclipse.org/jetty/">http://download.eclipse.org/jetty/</a>
jetty6 下载地址,目前不知道以后还会不会提供下载。
<a href="http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip">http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip</a>
Jetty Version Comparison Table
VersionServletJavaNamespaceLicensesSiteStatusJetty 9Servlet 3.0+Java 1.7org.eclipse.jetty.*EPLv1?/?ASLv2Eclipse.orgAlpha MilestonesJetty 8Servlet 3.0Java 1.6org.eclipse.jetty.*EPLv1?/?ASLv2Eclipse.orgStableJetty 7Servlet 2.5Java 1.5org.eclipse.jetty.*EPLv1?/?ASLv2Eclipse.orgStableJetty 6Servlet 2.5Java 1.4org.mortbay.*ASLv2Codehaus.orgEnd of Life / Nov 2010
其他问题:
启动jetty后,访问jsp页面,出现一下错误:
HTTP ERROR: 500
JSP support not configured
RequestURI=/capaa/WEB-INF/jsp/error/500.jsp
<a href="http://jetty.mortbay.org/">Powered by Jetty://</a>
原因:是应为没有加载jetty用来解释jsp的jar包。加载进来就可以了。
解决办法:project--点右键---property---java build path----Add Extenters Jars
选择jetty6.1--lib--jsp2.1---*.jar添加即可