Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Краденные лабы / 8308ДовженкоАЕ_лр4

.pdf
Скачиваний:
2
Добавлен:
08.04.2023
Размер:
299.62 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ВТ

ОТЧЕТ по лабораторной работе №4

по дисциплине «Распределенные системы и сети» Тема: Java Message Service

Студентка гр. 8308

 

Довженко А.Е.

Преподаватель

 

Бекенева Я.А.

 

 

 

 

 

Санкт-Петербург, 2022

Цель работы

Знакомство с технологией Java Message Service.

Задание к лабораторной работе

Cоздать приложение, отправляющее сообщение в queue, и message-driven bean, читающий отправленное в queue сообщение.

Выполнение лабораторной работы

Перед созданием проекта необходимо настроить сервер сообщений,

добавив через консоль администратора Connection Factory (рис. 1) и Destination Resource (рис. 2).

Рис 1

Рис 2

2

Далее необходимо создать проект Enterprise Application, указав при создании генерацию модулей EJB и WEB. Следующим шагом является создание

MDB. Переходим к модулю EJB созданного проекта и добавляем туда компонент, управляемый сообщениями, причём выбираем Server Destination, в

качестве которого выбираем созданный ранее Destination Resource.

Код созданного MDB, файл MBeans.java:

/*

*Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license

*Click nbfs://nbhost/SystemFileSystem/Templates/J2EE/EJB30/MessageDrivenBean.java to edit this template

*/

package etu.mdb;

import java.util.logging.Level; import java.util.logging.Logger;

import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven;

import javax.jms.JMSException; import javax.jms.Message;

import javax.jms.MessageListener; import javax.jms.TextMessage;

/**

*

* @author amber */

@MessageDriven(activationConfig = {

@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "DestinationResource"),

@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")

})

public class MBean implements MessageListener {

public MBean() {

}

@Override

public void onMessage(Message message) {

TextMessage tmsg = null; tmsg = (TextMessage)message; try {

System.out.println(tmsg.getText()); } catch(JMSException ex){

Logger.getLogger(MBean.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

3

После создания бина создаём JSP, которая будет обрабатывать введённое

нами сообщение.

Код созданной JSP, файл index.jsp:

<%--

Document

: index

Created on :

11 апр. 2022 г., 02:29:36

Author

:

amber

--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html>

<html> <head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title>

</head> <body>

<form action="NewServlet" method="get">

<input name="msg" id="message" type="text"> <input type="submit" value="Ввод"/>

</form> </body>

</html>

Наконец, пишем сервлет, передающий введённое сообщение-строку MDB

из уже созданной JSP.

Код созданного сервлета, файл NewServlet.java:

/*

*Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license

*Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template

*/

package etu.mdb;

import java.io.*;

import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.*; import javax.jms.*;

import javax.servlet.http.*; import javax.servlet.annotation.*;

@WebServlet(name = "NewServlet", value = "/NewServlet") public class NewServlet extends HttpServlet {

@Resource(name = "ConnectionFactory") private ConnectionFactory connectionFactory;

@Resource(name = "DestinationResource") private Destination destination;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

response.setContentType("text/html;charset=UTF-8");

4

request.setCharacterEncoding("UTF-8"); String str = request.getParameter("msg"); try {

Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false,

Session.AUTO_ACKNOWLEDGE);

MessageProducer messageProducer = session.createProducer(destination); TextMessage textMessage = session.createTextMessage(str); messageProducer.send(textMessage);

connection.close();

} catch (JMSException ex) { Logger.getLogger(NewServlet.class.getName()).

log(Level.SEVERE, null, ex);

}

PrintWriter out = response.getWriter(); out.println("<html><body>");

out.println("<text>Сообщение <b>" + str + " </b>отправлено в логи</text>"); out.println("</body></html>");

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{

doGet(request, response);

}

public void destroy() {

}

}

5

Иллюстрация работы Web-приложения

Результат работы созданного Web-приложения представлен на рис. 3-6.

Рис 3. JSP-страница для ввода сообщения

Рис 4. Сервлет, передающий сообщение из JSP

Рис 5. Сообщение в логах сервера в среде разработки NetBeans

Рис 6. Сообщение в файле server.log

Вывод

В результате выполнения лабораторной работы ознакомилась с технологией Java Message Service.

Было создано приложение, отправляющее сообщение в queue, и message-

driven bean, читающий отправленное в queue сообщение.

6