2016-05-15 83 views
1

好吧,我現在開始使用tomee,我的pom.xml配置爲使用tomcat。所以,我不確定我需要使用以下技術刪除或添加tomee:JPA,CDI,EJB,HIBERNATE。配置pom.xml以使用tomee

我配置了我這樣的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>br.com</groupId> 
    <artifactId>cedoc</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>cedoc Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
    </properties> 
    <dependencies> 

     <!-- FOR TOMEE --> 
     <dependency> 
      <groupId>org.apache.openejb</groupId> 
      <artifactId>openejb-core</artifactId> 
      <version>4.7.4</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.openejb</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>6.0-6</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- FOR TOMEE --> 

     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>2.3</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-jxpath</groupId> 
      <artifactId>commons-jxpath</artifactId> 
      <version>1.3</version> 
     </dependency> 


     <dependency> 
      <groupId>br.com.jwebbuild</groupId> 
      <artifactId>jwebbuild</artifactId> 
      <version>2.0</version> 
     </dependency> 

     <!-- JASPER REPORT IMPORTS --> 

     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.10-FINAL</version> 
     </dependency> 


     <dependency> 
      <groupId>net.sourceforge.barbecue</groupId> 
      <artifactId>barbecue</artifactId> 
      <version>1.5-beta1</version> 
     </dependency> 


     <dependency> 
      <groupId>net.sf.jasperreports</groupId> 
      <artifactId>jasperreports</artifactId> 
      <version>5.0.1</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sf.jasperreports</groupId> 
      <artifactId>jasperreports-fonts</artifactId> 
      <version>4.0.0</version> 
     </dependency> 

     <dependency> 
      <groupId>xerces</groupId> 
      <artifactId>xercesImpl</artifactId> 
      <version>2.10.0</version> 
     </dependency> 


     <!-- FIM JASPER RESPORT IMPORTS --> 

     <dependency> 
      <groupId>org.primefaces.extensions</groupId> 
      <artifactId>primefaces-extensions</artifactId> 
      <version>3.0.0</version> 
     </dependency> 



     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>5.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.primefaces.themes</groupId> 
      <artifactId>all-themes</artifactId> 
      <version>1.0.10</version> 
     </dependency> 



     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.2.12</version> 
      <scope>provided</scope> 
     </dependency> 


     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.2.12</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- HIBERNATE --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>3.6.10.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.6.10.Final</version> 
     </dependency> 

     <!-- Hibernate c3p0 connection pool --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-c3p0</artifactId> 
      <version>3.6.3.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib-nodep</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.12.1.GA</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>asm</groupId> 
      <artifactId>asm-commons</artifactId> 
      <version>3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sf.ehcache</groupId> 
      <artifactId>ehcache</artifactId> 
      <version>2.7.4</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-net</groupId> 
      <artifactId>commons-net</artifactId> 
      <version>3.3</version> 
     </dependency> 


     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.3</version> 
     </dependency> 


     <dependency> 
      <groupId>javax.annotation</groupId> 
      <artifactId>jsr250-api</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.omnifaces</groupId> 
      <artifactId>omnifaces</artifactId> 
      <version>1.11-M1</version> 
     </dependency> 

    </dependencies> 

    <repositories> 
     <repository> 
      <id>prime-repo</id> 
      <name>PrimeFaces Maven Repository</name> 
      <url>http://repository.primefaces.org</url> 
      <layout>default</layout> 
     </repository> 

     <repository> 
      <id>java.net2.m2</id> 
      <name>Java.net m2 repo</name> 
      <url>http://download.java.net/maven/2</url> 
     </repository> 
    </repositories> 

    <build> 
     <finalName>cedoc</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-pmd-plugin</artifactId> 
       <version>2.5</version> 
       <configuration> 
        <targetJdk>1.6</targetJdk> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 

     </plugins> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
    </build> 
</project> 

但我得到了一些錯誤,請參閱:

時開始服務器,我得到錯誤:

Caused by: java.lang.ClassNotFoundException: org.jboss.weld.environment.servlet.Listener 

什麼正確的庫我必須在pom.xml中添加tomee和什麼範圍?

回答

4

如果你正在開發一個香草JavaEE應用,你需要這種依賴性:

<dependency> 
    <groupId>org.apache.openejb</groupId> 
    <artifactId>openejb-core</artifactId> 
    <version>4.7.4</version> 
    <scope>provided</scope> 
</dependency> 

這是爲什麼?因爲TomEE沒有任何其他實現JavaEE標準。如果你將你的應用程序綁定到TomEE,那麼你沒有正確使用它!

接下來,你沒有說你使用的是什麼版本TomEE的,但這些依賴關係是犯罪嫌疑人:

<dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.2.12</version> 
     <scope>provided</scope> 
    </dependency> 


    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.2.12</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

TomEE 1.7.4是JavaEE6兼容的,所以JSF 2.2將無法正常工作,除非你將lib目錄中的MyFaces 2.1 jar替換爲最新的MyFaces 2.2 jar包。您將它們用作提供的依賴關係是正確的,所以不要改變它。另一種選擇是使用TomEE 7,它尚未發佈,但提供JavaEE 7兼容性。

<dependency> 
     <groupId>javax.annotation</groupId> 
     <artifactId>jsr250-api</artifactId> 
     <version>1.0</version> 
    </dependency> 

^這應該完全刪除。香草JavaEE jar提供了這些接口。

好的,所以至少您必須先解決這些問題,然後才能繼續。一旦你這樣做,如果你有這些問題,請回復另一個問題。祝你好運!

+0

謝謝。有了這個我可以繼續。什麼是「vanilla javaEE」,我不明白這個表達 – RonaldoLanhellas

+0

它指代你的代碼開發風格。僅使用JSR和JavaEE官方規範中的類和功能。這可以防止您被鎖定到供應商。 –

+0

非常感謝。 – RonaldoLanhellas