1. запуск
Я подготовлю детальную пошаговую инструкцию по запуску и проверке JMS-сервиса.
Полная последовательность действий
1. Подготовка WildFly
- Убедитесь, что установлен WildFly (желательно версия 27+)
# Проверка версии
$WILDFLY_HOME/bin/standalone.sh --version
- Настройка 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. Сборка проекта
- Соберите проект Maven:
# В директории проекта
mvn clean package
- Проверьте, что создался WAR-файл:
ls target/*.war
# Должен показать что-то вроде target/jms-demo.war
3. Развертывание приложения
- Скопируйте WAR-файл в развертывания WildFly:
cp target/jms-demo.war $WILDFLY_HOME/standalone/deployments/
4. Запуск WildFly
- Запустите сервер в полном профиле:
$WILDFLY_HOME/bin/standalone.sh -c standalone-full.xml
5. Проверка развертывания
- В логах сервера найдите сообщения о деплойменте:
... DEPLOYED "jms-demo.war"
6. Тестирование сервиса
Варианты проверки:
- Через браузер:
- Откройте
http://localhost:8080/jms-demo/producer
-
Должно появиться сообщение "Сообщение успешно отправлено в очередь"
-
Через curl:
curl http://localhost:8080/jms-demo/producer
- Консольный 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. Полный цикл тестирования
- Отправка сообщения:
# Через браузер или curl
http://localhost:8080/jms-demo/producer
- Получение сообщения:
# Скомпилируйте и запустите standalone-клиент
mvn compile exec:java -Dexec.mainClass="com.example.jms.JMSStandaloneClient"
Возможные проблемы и решения
- Ошибки JNDI
- Проверьте настройки подключения
-
Убедитесь, что WildFly запущен в полном профиле
-
Порты
-
По умолчанию:
- HTTP: 8080
- Management: 9990
-
Логи
- Смотрите
$WILDFLY_HOME/standalone/log/server.log
Дополнительные настройки безопасности
- Настройте аутентификацию в
standalone-full.xml
- Используйте SSL для защищенного обмена
Советы
- Всегда проверяйте логи сервера
- Используйте полнопрофильную конфигурацию
- Настраивайте механизмы обработки ошибок
- Следите за производительностью очередей
Нужны ли вам какие-то дополнительные пояснения по запуску или настройке?