Skip to content

1. начало

Отлично! Давайте создадим простой проект на Java EE с использованием EJB, Maven и Apache Tomcat. Для начала, вам нужно убедиться, что у вас установлены все необходимые инструменты, включая JDK 17, Maven и Apache Tomcat.

Шаг 1: Создание Maven проекта

  1. Создайте новый Maven проект. Вы можете сделать это через командную строку или через вашу IDE (например, IntelliJ IDEA). Если вы используете командную строку, выполните следующую команду:

bash mvn archetype:generate -DgroupId=com.example -DartifactId=ejb-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Это создаст базовую структуру Maven проекта.

  1. Перейдите в созданный каталог проекта:

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

  1. Создайте пакет для вашего EJB. В каталоге src/main/java создайте структуру пакетов:

src/main/java/com/example/ejb

  1. Создайте интерфейс UserService:

```java package com.example.ejb;

import jakarta.ejb.Remote;

@Remote public interface UserService { void addUser(String username); String getUser(int id); } ```

  1. Создайте реализацию 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 users = new HashMap<>(); private int userIdCounter = 0;

@Override
public void addUser(String username) {
    users.put(userIdCounter++, username);
}

@Override
public String getUser(int id) {
    return users.get(id);
}

} ```

Шаг 4: Создание сервлета

  1. Создайте пакет для вашего сервлета. В каталоге src/main/java создайте структуру пакетов:

src/main/java/com/example/servlet

  1. Создайте сервлет 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

  1. Скопируйте файл WAR. Найдите созданный файл WAR в каталоге target (например, ejb-example-1.0-SNAPSHOT.war) и скопируйте его в каталог webapps вашего Tomcat. Обычно он находится по пути /path/to/tomcat/webapps/.

  2. Запустите Tomcat. Если Tomcat еще не запущен, вы можете запустить его с помощью следующей команды:

/path/to/tomcat/bin/startup.sh
  1. Проверьте, что приложение развернуто. Откройте браузер и перейдите по адресу:
http://localhost:8080/ejb-example-1.0-SNAPSHOT/user?action=add&username=JohnDoe

Это добавит пользователя с именем "JohnDoe".

  1. Получите пользователя. Теперь вы можете получить пользователя, перейдя по следующему 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 РАБОТАЕТ]]