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 プロファイル仕様があります。他のすべてのプロジェクトは、「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 から) を初めて使用するので、何か間違ったことをしているに違いありません。IDEとしてEclipse Lunaを使用しています。

下手な英語ですみません!

4

1 に答える 1

1

わかりました、私は今何が起こっているのか理解しています。提供されたスコープを持つ依存関係は推移的ではないようです。これはまさに私が望んでいたことです! ( Maven が提供するスコーピングを推移的にすることはできますか? )

とにかくありがとう!!

于 2014-11-09T22:14:37.577 に答える