当前位置: 代码迷 >> Web前端 >> hive起步web程序流程
  详细解决方案

hive起步web程序流程

热度:193   发布时间:2013-10-16 11:29:46.0
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

Version Servlet Java Namespace Licenses Site Status
Jetty 9 Servlet 3.0+ Java 1.7 org.eclipse.jetty.* EPLv1?/?ASLv2 Eclipse.org Alpha Milestones
Jetty 8 Servlet 3.0 Java 1.6 org.eclipse.jetty.* EPLv1?/?ASLv2 Eclipse.org Stable
Jetty 7 Servlet 2.5 Java 1.5 org.eclipse.jetty.* EPLv1?/?ASLv2 Eclipse.org Stable
Jetty 6 Servlet 2.5 Java 1.4 org.mortbay.* ASLv2 Codehaus.org End 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添加即可