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を使用しています。
下手な英語ですみません!