tomcat hbase jar包合物

tomcat hbase jar包合物,tomcat,maven,jersey,hbase,Tomcat,Maven,Jersey,Hbase,我正在尝试使用tomcat设置一个简单的hbase webapp。据我所知,我知道我需要包括hbase jar和hadoop jar,以便将hbase与zoopkeeper jar一起使用 问题是,当我在maven pom中包含hbase jar时,它会下载我不想要的各种可传递的依赖jar(例如jetty、servlet api等),因为hbase本身有自己的内置jetty web应用程序用于监控。我认为这与tomcat打包和启动冲突,导致我有以下例外: HTTP Status 500 - t

我正在尝试使用tomcat设置一个简单的hbase webapp。据我所知,我知道我需要包括hbase jar和hadoop jar,以便将hbase与zoopkeeper jar一起使用

问题是,当我在maven pom中包含hbase jar时,它会下载我不想要的各种可传递的依赖jar(例如jetty、servlet api等),因为hbase本身有自己的内置jetty web应用程序用于监控。我认为这与tomcat打包和启动冲突,导致我有以下例外:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

root cause

com.sun.jersey.api.container.ContainerException: No WebApplication provider is present
    com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69)
    com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391)
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:306)
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:607)
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:619)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.28 logs.
当我从pom中注释掉hbase jar时(hbase的所有依赖jar也会像预期的那样消失),tomcat部署良好,我可以访问我的rest/spring servlet

我已尝试使用排除来排除具有以下内容的hbase直接依赖项:

<dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase</artifactId>
            <version>0.90.3-cdh3u1 </version>
            <exclusions>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-util</artifactId>
                    <!-- <version>1.4</version> -->
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jsp-2.1</artifactId>
                    <!-- <version>6.1.14</version> -->
                </exclusion>
                <exclusion>
                    <groupId>org.apache.thrift</groupId>
                    <artifactId>thrift</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jruby</groupId>
                    <artifactId>jruby-complete</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jsp-api-2.1</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>servlet-api-2.5</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-httpclient</groupId>
                    <artifactId>commons-httpclient</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-lang</groupId>
                    <artifactId>commons-lang</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>avro</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jsp-2.1</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>tomcat</groupId>
                    <artifactId>jasper-compiler</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>tomcat</groupId>
                    <artifactId>jasper-runtime</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.protobuf</groupId>
                    <artifactId>protobuf-java</artifactId>
                </exclusion>

                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>

            </exclusions>
        </dependency>

org.apache.hbase
数据库
0.90.3-cdh3u1
org.mortbay.jetty
servlet api
org.mortbay.jetty
码头
org.mortbay.jetty
码头
org.mortbay.jetty
jsp-2.1
org.apache.thrift
节俭
番石榴
番石榴
org.jruby
jruby完成
org.mortbay.jetty
jsp-api-2.1
org.mortbay.jetty
servlet-api-2.5
commons httpclient
commons httpclient
公地郎
公地郎
org.apache.hadoop
阿夫罗
org.mortbay.jetty
jsp-2.1
雄猫
贾斯珀编译器
雄猫
jasper运行时
com.google.protobuf
protobuf java
javax.servlet
servlet api
log4j
log4j
但是没有用,我仍然有问题

那么,是否有人拥有一个现有的pom,其中包括hbase和hadoop,并以某种方式让tomcat使用jersey工作

我知道以上内容并不详细,我会补充更多细节。我将粘贴maven完整pom


非常感谢HBase也取决于Jersey,因此您需要确保应用程序中不会出现两个不同版本的Jersey。

HBase也取决于Jersey,因此,您需要确保您的应用程序中不会出现两个不同版本的Jersey。

如果有人使用maven安装了tomcat hbase示例,请您建议如何在tomcat web inf库中适当地包含hbase jar。由此产生的战争是什么样子的?(即,其中包含哪些库?)您使用的是什么版本的Jersey?据我所知,HBase也依赖于Jersey。也许在HBase中,您正在使用另一个版本的Jersey,这就是问题的原因?嗨,Martin,我正在使用tomcat 6。Jersey-server-1.8.jar、Jersey-core-1.8.jar、Jersey-spring-1.8.jar。我没有意识到HBase也依赖于球衣,也许我也需要排除这一点?我要试一试。谢谢你的评论。我会回来更新的。嗨,马丁,很好。我排除了Jersey hbase依赖项,并解决了它。非常感谢。阿马克。jersey core com.sun.jersey OK,将其作为一个答案发布,这样其他人就不会认为这个问题仍然没有答案。你能接受这个答案吗?谢谢。如果有人有使用maven的tomcat hbase安装示例,请您建议如何将hbase JAR适当地包含在tomcat web inf库中。由此产生的war是什么样子的?(即,其中包含哪些库?)您使用的是什么版本的Jersey?据我所知,HBase也依赖于Jersey。也许在HBase中,您正在使用另一个版本的Jersey,这就是问题的原因?嗨,Martin,我正在使用tomcat 6。Jersey-server-1.8.jar、Jersey-core-1.8.jar、Jersey-spring-1.8.jar。我没有意识到HBase也依赖于球衣,也许我也需要排除这一点?我要试一试。谢谢你的评论。我会回来更新的。嗨,马丁,很好。我排除了Jersey hbase依赖项,并解决了它。非常感谢。阿马克。jersey core com.sun.jersey OK,将其作为一个答案发布,这样其他人就不会认为这个问题仍然没有答案。你能接受这个答案吗?谢谢