1

我正在尝试使用 Tomcat 8 作为新 Web 应用程序的服务器。我将使用很多 java EE 7 Web 配置文件技术,其中包括 EJB Lite 规范。

实际上,Web 应用程序项目由其他几个 Maven 项目组成。我有一个 rest-api 项目(使用 JAX-RS 2.0)、一个业务项目(当前打包为 jar)和域项目(也是一个 jar)。我有一些常见的依赖项,我将它们打包在一个单独的模块“common-deps”(pom 包)中。在这些依赖项中,有 java ee 7 web profile 规范。所有其他项目都依赖于“common-deps”项目。

接下来是 common-deps 项目的 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/xsd/maven-4.0.0.xsd">

      <modelVersion>4.0.0</modelVersion>
      <groupId>....</groupId>
      <artifactId>commons-deps</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>Common dependencies</name>

      <properties>
        <cdi.version>1.1</cdi.version>
        <sl4j.version>1.7.7</sl4j.version>
        <log4j.version>1.2.17</log4j.version>
        <junit.version>4.11</junit.version>
      </properties>

      <dependencies>

      <dependency> 
           <groupId>javax</groupId>   
            <artifactId>javaee-web-api</artifactId>   
            <version>7.0</version>
            <scope>provided</scope> 
      </dependency> 
  <!--  
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>${cdi.version}</version>
        <scope>provided</scope>
    </dependency> 
  -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${sl4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${sl4j.version}</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${junit.version}</version>
         <scope>test</scope>
     </dependency>
  </dependencies>

</project>

问题是,当我尝试使用 @Stateless 注释创建无状态会话 bean 时,找不到此注释。我不知道这是为什么,也许不应该提供 javaee-web-api 范围?但是,据我了解,tomcat 8 应该支持这个配置文件......也许是因为我缺少一些 java ee api 的具体实现?如果确实如此,我是否应该为 java ee web 配置文件中的每个 api 指定实现?而且,我应该为 ejb lite api 选择什么实现?

我到处搜索,但找不到任何关于使用 tomcat 8 开发 java ee 7 web 应用程序的教程,而且由于我是 java ee 堆栈的新手(来自 Spring),所以我一定做错了。我使用 Eclipse Luna 作为 IDE。

原谅我糟糕的英语!

4

1 回答 1

1

好的,我现在明白发生了什么。似乎提供范围的依赖项不能传递,这正是我所希望的!(Maven 提供的范围可以传递吗?

不管怎么说,还是要谢谢你!!

于 2014-11-09T22:14:37.577 回答