1. начало
Отлично! Давайте создадим простой проект на Java EE с использованием EJB, Maven и Apache Tomcat. Для начала, вам нужно убедиться, что у вас установлены все необходимые инструменты, включая JDK 17, Maven и Apache Tomcat.
Шаг 1: Создание Maven проекта
- Создайте новый Maven проект. Вы можете сделать это через командную строку или через вашу IDE (например, IntelliJ IDEA). Если вы используете командную строку, выполните следующую команду:
bash
mvn archetype:generate -DgroupId=com.example -DartifactId=ejb-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Это создаст базовую структуру Maven проекта.
- Перейдите в созданный каталог проекта:
bash
cd ejb-example
Шаг 2: Настройка pom.xml
Откройте файл pom.xml
и добавьте зависимости для EJB и сервлетов. Вот пример, как может выглядеть ваш 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>ejb-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>ejb-example</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>9.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
Шаг 3: Создание EJB
- Создайте пакет для вашего EJB. В каталоге
src/main/java
создайте структуру пакетов:
src/main/java/com/example/ejb
- Создайте интерфейс
UserService
:
```java package com.example.ejb;
import jakarta.ejb.Remote;
@Remote public interface UserService { void addUser(String username); String getUser(int id); } ```
- Создайте реализацию
UserServiceBean
:
```java package com.example.ejb;
import java.util.HashMap; import java.util.Map; import jakarta.ejb.Remote; import jakarta.ejb.Stateless;
@Stateless
@Remote
public class UserServiceBean implements UserService {
private Map
@Override
public void addUser(String username) {
users.put(userIdCounter++, username);
}
@Override
public String getUser(int id) {
return users.get(id);
}
} ```
Шаг 4: Создание сервлета
- Создайте пакет для вашего сервлета. В каталоге
src/main/java
создайте структуру пакетов:
src/main/java/com/example/servlet
- Создайте сервлет
UserServlet
:
```java package com.example.servlet;
import com.example.ejb.UserService; // Пример для UserServlet.java import jakarta.ejb.EJB; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user") public class UserServlet extends HttpServlet { @EJB private UserService userService;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if ("add".equals(action)) {
String username = request.getParameter("username");
userService.addUser(username);
response.getWriter().write("User added: " + username);
} else if ("get".equals(action)) {
int id = Integer.parseInt(request.getParameter("id"));
String user = userService.getUser(id);
response.getWriter().write("Retrieved user: " + user);
} else {
response.getWriter().write("Invalid action");
}
}
}
### Шаг 5: Настройка `web.xml`
Теперь вам нужно настроить файл `web.xml`, чтобы ваш сервлет был доступен. Создайте файл `web.xml` в каталоге `src/main/webapp/WEB-INF` (если папка `WEB-INF` не существует, создайте её):
```xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.example.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
Шаг 6: Сборка проекта
Теперь, когда все файлы созданы, вы можете собрать проект с помощью Maven. В корневом каталоге вашего проекта выполните следующую команду:
mvn clean package
Эта команда создаст файл WAR в каталоге target
.
Шаг 7: Развертывание на Apache Tomcat
-
Скопируйте файл WAR. Найдите созданный файл WAR в каталоге
target
(например,ejb-example-1.0-SNAPSHOT.war
) и скопируйте его в каталогwebapps
вашего Tomcat. Обычно он находится по пути/path/to/tomcat/webapps/
. -
Запустите Tomcat. Если Tomcat еще не запущен, вы можете запустить его с помощью следующей команды:
/path/to/tomcat/bin/startup.sh
- Проверьте, что приложение развернуто. Откройте браузер и перейдите по адресу:
http://localhost:8080/ejb-example-1.0-SNAPSHOT/user?action=add&username=JohnDoe
Это добавит пользователя с именем "JohnDoe".
- Получите пользователя. Теперь вы можете получить пользователя, перейдя по следующему URL:
http://localhost:8080/ejb-example-1.0-SNAPSHOT/user?action=get&id=0
Это должно вернуть "Retrieved user: JohnDoe".
Структура проекта
В итоге структура вашего проекта должна выглядеть следующим образом:
ejb-example
│
├── pom.xml
│
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ ├── ejb
│ │ │ ├── UserService.java
│ │ │ └── UserServiceBean.java
│ │ └── servlet
│ │ └── UserServlet.java
│ └── webapp
│ └── WEB-INF
│ └── web.xml
└── test
Заключение
Теперь у вас есть базовое приложение на Java EE с использованием EJB и сервлетов, развернутое на Apache Tomcat. Вы можете расширять его, добавляя больше функциональности, например, обработку ошибок, валидацию данных и т.д. Если у вас есть дополнительные вопросы или вам нужна помощь с чем-то еще, не стесняйтесь спрашивать!
ejb с tomcat сервером не работает, но работает с wildfly
[[2. не работает с tomcat из коробки. установка WildFly РАБОТАЕТ]]