Tomcat 8+;Maven+;JavaEE7Web配置文件

Tomcat 8+;Maven+;JavaEE7Web配置文件,java,maven,java-ee-7,eclipse-luna,tomcat8,Java,Maven,Java Ee 7,Eclipse Luna,Tomcat8,我正在尝试使用Tomcat8作为新web应用程序的服务器。我将使用很多JavaEE7Web概要文件技术,其中包括EJBLite规范 事实上,web应用程序项目由其他几个maven项目组成。我有一个RESTAPI项目(使用JAX-RS2.0)、一个业务项目(当前打包为jar)和一个域项目(也是一个jar)。我有一些公共依赖项,我将它们打包在一个单独的模块“common deps”(pom包)中。在这些依赖项中,有JavaEE7Web概要文件规范。所有其他项目都依赖于“公共deps”项目 接下来是通

我正在尝试使用Tomcat8作为新web应用程序的服务器。我将使用很多JavaEE7Web概要文件技术,其中包括EJBLite规范

事实上,web应用程序项目由其他几个maven项目组成。我有一个RESTAPI项目(使用JAX-RS2.0)、一个业务项目(当前打包为jar)和一个域项目(也是一个jar)。我有一些公共依赖项,我将它们打包在一个单独的模块“common deps”(pom包)中。在这些依赖项中,有JavaEE7Web概要文件规范。所有其他项目都依赖于“公共deps”项目

接下来是通用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>

4.0.0
....
下议院副议长
0.0.1-快照
聚甲醛
公共依赖项
1.1
1.7.7
1.2.17
4.11
爪哇
javaeewebapi
7
假如
org.slf4j
slf4j api
${sl4j.version}
org.slf4j
slf4j-log4j12
${sl4j.version}
log4j
log4j
${log4j.version}
朱尼特
朱尼特
${junit.version}
测试
问题是,当我尝试使用@stateless注释创建无状态会话bean时,找不到该注释。我不知道为什么会这样,也许不应该提供JavaEEWebAPI范围?但是,据我所知,Tomcat8应该支持这个配置文件。。。也许是因为我缺少一些JavaEEAPI的具体实现?如果确实如此,我是否应该为JavaEEWeb概要文件中的每个api指定实现?而且,我应该为EJBLiteAPI选择什么实现

我到处搜索,但找不到任何关于使用Tomcat8开发JavaEE7Web应用程序的教程,因为我是JavaEE堆栈的新手(来自Spring),我一定是做错了什么。我使用EclipseLuna作为IDE


请原谅我的英语不好

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


无论如何谢谢你

tomcat是唯一的web容器,它不支持开箱即用的web配置文件。如果您对使用JavaEEWebProfileReady服务器构建应用程序感兴趣,我建议您看看WebSphereLiberty。它已经通过了JavaEE6WebProfile认证(因此没有jar/依赖性噩梦),并且已经具有JavaEE7WebProfile中的许多最有用的特性,还有更多特性。查看它-免费开发。还有用于Eclipse的工具插件-WebSphere开发人员工具。