运行 Hbase 与 Java Servlet

Running Hbase with Java Servlets

我写了一个 Hbase Java 基本代码,可以很好地与 Java 一起工作。

public class HBaseTest {

    public static String newFunc() throws IOException {

        // Instantiating configuration class
        Configuration config = HBaseConfiguration.create();

        Connection connection = ConnectionFactory.createConnection(config);
        Table table = connection.getTable(TableName.valueOf("customer"));

        Get g = new Get(Bytes.toBytes("jsmith"));

        Result result = table.get(g);

        // Reading values from Result class object
        byte[] value = result.getValue(Bytes.toBytes("addr"), Bytes.toBytes("city"));

        return Bytes.toString(value);

    }
}

所以我决定使用这段代码和 Hbase 作为我的 Web 应用程序开发的一部分,所以我在 Eclipse Java EE IDE 中打开了一个新的动态 Web 项目并添加了这个文件,更改函数的名称并从其中一个 servlet 调用它。我还添加了所需的 jar 文件。 但是我遇到了以下错误:

java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
    at HBaseTest.newFunc(HBaseTest.java:18)
    at BakwasServlet.doGet(BakwasServlet.java:16)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

这个错误现在让我很沮丧。以前有没有人遇到过这种情况,或者有人可以帮助我吗?我没有设置 hbase_home 变量。 java 代码也不需要它。

提前致谢!

您在哪里添加了 HBase JAR 文件?它应该在您的 Web 应用程序的 WEB-INF/lib 文件夹中(或在服务器的 lib 文件夹中,但最好将其保存在应用程序中)。