Skip to content

1. запуск

Я подготовлю детальную пошаговую инструкцию по запуску и проверке JMS-сервиса.

Полная последовательность действий

1. Подготовка WildFly

  1. Убедитесь, что установлен WildFly (желательно версия 27+)
# Проверка версии
$WILDFLY_HOME/bin/standalone.sh --version
  1. Настройка messaging-активемq:
# Запустите CLI WildFly
$WILDFLY_HOME/bin/jboss-cli.sh

# Подключитесь к серверу
connect

# Создайте JMS очередь
/subsystem=messaging-activemq/server=default/jms-queue=ExampleQueue:add(entries=["java:/jms/queue/ExampleQueue"])

# Создайте фабрику подключений
/subsystem=messaging-activemq/server=default/connection-factory=ExampleConnectionFactory:add(entries=["java:/ConnectionFactory"])

# Перезагрузите сервер
:reload

2. Сборка проекта

  1. Соберите проект Maven:
# В директории проекта
mvn clean package
  1. Проверьте, что создался WAR-файл:
ls target/*.war
# Должен показать что-то вроде target/jms-demo.war

3. Развертывание приложения

  1. Скопируйте WAR-файл в развертывания WildFly:
cp target/jms-demo.war $WILDFLY_HOME/standalone/deployments/

4. Запуск WildFly

  1. Запустите сервер в полном профиле:
$WILDFLY_HOME/bin/standalone.sh -c standalone-full.xml

5. Проверка развертывания

  1. В логах сервера найдите сообщения о деплойменте:
... DEPLOYED "jms-demo.war"

6. Тестирование сервиса

Варианты проверки:

  1. Через браузер:
  2. Откройте http://localhost:8080/jms-demo/producer
  3. Должно появиться сообщение "Сообщение успешно отправлено в очередь"

  4. Через curl:

curl http://localhost:8080/jms-demo/producer
  1. Консольный JMS-клиент

Для полной проверки добавим консольный клиент:

package com.example.jms;

import jakarta.jms.*;
import jakarta.naming.Context;
import jakarta.naming.InitialContext;
import java.util.Properties;

public class JMSStandaloneClient {
    public static void main(String[] args) {
        try {
            // Настройка подключения к WildFly
            Properties props = new Properties();
            props.put(Context.INITIAL_CONTEXT_FACTORY, 
                "org.wildfly.naming.client.WildFlyInitialContextFactory");
            props.put(Context.PROVIDER_URL, "remote+http://localhost:8080");

            // Создание контекста
            Context context = new InitialContext(props);

            // Получение фабрики подключений и очереди
            ConnectionFactory connectionFactory = 
                (ConnectionFactory) context.lookup("java:/ConnectionFactory");
            Queue queue = (Queue) context.lookup("java:/jms/queue/ExampleQueue");

            // Создание соединения
            try (Connection connection = connectionFactory.createConnection()) {
                connection.start();

                // Создание сессии
                try (Session session = connection.createSession(
                    false, Session.AUTO_ACKNOWLEDGE)) {

                    // Создание получателя сообщений
                    MessageConsumer consumer = session.createConsumer(queue);

                    // Получение сообщения с таймаутом
                    Message message = consumer.receive(5000);

                    if (message instanceof TextMessage textMessage) {
                        System.out.println("Получено сообщение: " + 
                            textMessage.getText());
                    } else {
                        System.out.println("Сообщений нет");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

7. Зависимости для standalone-клиента

Добавьте в pom.xml:

<dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-client-all</artifactId>
    <version>27.0.0.Final</version>
</dependency>

8. Полный цикл тестирования

  1. Отправка сообщения:
# Через браузер или curl
http://localhost:8080/jms-demo/producer
  1. Получение сообщения:
# Скомпилируйте и запустите standalone-клиент
mvn compile exec:java -Dexec.mainClass="com.example.jms.JMSStandaloneClient"

Возможные проблемы и решения

  1. Ошибки JNDI
  2. Проверьте настройки подключения
  3. Убедитесь, что WildFly запущен в полном профиле

  4. Порты

  5. По умолчанию:

    • HTTP: 8080
    • Management: 9990
  6. Логи

  7. Смотрите $WILDFLY_HOME/standalone/log/server.log

Дополнительные настройки безопасности

  1. Настройте аутентификацию в standalone-full.xml
  2. Используйте SSL для защищенного обмена

Советы

  • Всегда проверяйте логи сервера
  • Используйте полнопрофильную конфигурацию
  • Настраивайте механизмы обработки ошибок
  • Следите за производительностью очередей

Нужны ли вам какие-то дополнительные пояснения по запуску или настройке?