2011-09-18 4 views
1

J'essaye de mettre en place une simple webapp hbase en utilisant tomcat. À ma connaissance, je comprends que j'ai besoin d'inclure le pot de hbase, et hadoop jar afin d'utiliser hbase avec le pot de zoopkeeper. Le problème est que lorsque j'inclus le fichier hbase jar dans mon pom maven, il télécharge toutes les sortes de fichiers jar transitifs dépendants que je ne veux pas (p.ex. jetty, servlet-api etc) parce que hbase lui-même a son propre app. qui est utilisé pour la surveillance. Je crois que ce conflit avec l'emballage tomcat et de démarrage que les résultats de mon ayant l'exception suivante:tomcat hbase jar inclusion

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. 

Quand je commente le pot de HBase de mon pom (tous les bocaux à charge pour HBase disparaissent trop comme prévu), et tomcat se déploie bien et je peux accéder à ma servlet de repos/printemps.

J'ai essayé d'utiliser les exclusions à excluse Hbase dépendances directes avec les éléments suivants:

<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> 

Mais en vain j'ai encore le problème.

Alors, est-ce que quelqu'un a un pom sortant où ils ont inclus hbase et hadoop et en quelque sorte obtenu tomcat pour travailler peut-être en utilisant jersey aussi?

Je sais que ce qui précède n'est pas détaillé Je vais ajouter plus de détails. Je vais coller le pom plein maven.

merci beaucoup

+0

Si quelqu'un a un exemple de configuration de tomcat hbase en utilisant maven, pouvez-vous nous indiquer comment inclure les fichiers hbase dans la librairie web de tomcat. – amak

+0

À quoi ressemble la guerre qui en résulte? (c'est-à-dire quelles bibliothèques sont incluses?) Quelle version de Jersey utilisez-vous? Pour autant que je sache, HBase dépend aussi de Jersey. Peut-être qu'avec HBase vous tirez une autre version de Jersey et c'est ce qui cause les problèmes? –

+0

Salut Martin, J'utilise tomcat 6. Jersey-serveur-1.8.jar, jersey-core-1.8.jar, jersey-printemps-1.8.jar. Je ne me suis pas rendu compte HBase dépend également de Jersey, peut-être que j'ai besoin d'exclure cela aussi? J'essaierai. Merci pour vos commentaires. Je serai de retour avec une mise à jour. – amak

Répondre

1

HBase dépend de Jersey, donc vous devez vous assurer de ne pas se retrouver avec deux versions différentes de Jersey dans votre application.