Я пытаюсь использовать Tomcat 8 в качестве сервера для нового веб-приложения. Я собираюсь использовать много технологий веб-профиля java EE 7, в том числе спецификацию EJB Lite.Tomcat 8 + Maven + Java EE 7 Профиль веб-сайта
Проект веб-приложения состоит, по сути, из нескольких других проектов maven. У меня есть проект rest-api (который использует JAX-RS 2.0), бизнес-проект (в настоящее время упакованный как банку) и проект домена (также банку). У меня есть набор общих зависимостей, которые я упаковал в отдельный модуль «common-deps» (пакет pom). Среди этих зависимостей - спецификация веб-профиля java ee 7. Все остальные проекты зависят от проекта «common-deps».
Следующая является pom.xml для проекта с общим DEPS:
<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, эта аннотация не найден. Я не знаю, почему это возможно, возможно, не нужно предоставлять javaee-web-api scope? Но, насколько я понимаю, tomcat 8 должен поддерживать этот профиль ... возможно, это потому, что мне не хватает конкретной реализации некоторых из java ee apis? Если это действительно так, следует ли указывать реализацию для каждого api внутри веб-профиля java ee? И, какую реализацию я должен выбрать для ejb lite api?
Я искал всюду, но я не мог найти учебное пособие по разработке веб-приложения java ee 7 с tomcat 8, и поскольку я новичок в стеке java ee (начиная с Spring), я должен делать что-то неправильно. Я использую Eclipse Luna как IDE.
Извините, мой плохой английский!
tomcat - это только веб-контейнер, он не поддерживает веб-профиль из коробки. Если вам интересно создавать приложения с готовым сервером веб-профиля Java EE, я бы рекомендовал взглянуть на WebSphere Liberty. Это уже сертифицированный веб-профиль Java EE 6 (так что ни один кошмар jar/dependency), и он уже имеет много полезных функций из веб-профиля Java EE 7, с еще большим успехом. Проверьте это - https://developer.ibm.com/wasdev/ бесплатно для разработки. Существует также плагин для инструментов Eclipse - WebSphere Developer Tools. – Gas