1+ package ru .javaops .masterjava .webapp ;
2+
3+ import lombok .extern .slf4j .Slf4j ;
4+
5+ import javax .jms .*;
6+ import javax .naming .InitialContext ;
7+ import javax .servlet .ServletConfig ;
8+ import javax .servlet .ServletException ;
9+ import javax .servlet .annotation .WebServlet ;
10+ import javax .servlet .http .HttpServlet ;
11+ import javax .servlet .http .HttpServletRequest ;
12+ import javax .servlet .http .HttpServletResponse ;
13+ import java .io .IOException ;
14+ import java .lang .IllegalStateException ;
15+
16+ @ WebServlet ("/sendJms" )
17+ @ Slf4j
18+ public class JmsSendServlet extends HttpServlet {
19+ private Connection connection ;
20+ private Session session ;
21+ private MessageProducer producer ;
22+
23+ @ Override
24+ public void init (ServletConfig config ) throws ServletException {
25+ super .init (config );
26+ try {
27+ InitialContext initCtx = new InitialContext ();
28+ ConnectionFactory connectionFactory = (ConnectionFactory ) initCtx .lookup ("java:comp/env/jms/ConnectionFactory" );
29+ connection = connectionFactory .createConnection ();
30+ session = connection .createSession (false , Session .AUTO_ACKNOWLEDGE );
31+ producer = session .createProducer ((Destination ) initCtx .lookup ("java:comp/env/jms/queue/MailQueue" ));
32+ } catch (Exception e ) {
33+ throw new IllegalStateException ("JMS init failed" , e );
34+ }
35+ }
36+
37+ @ Override
38+ public void destroy () {
39+ if (connection != null ) {
40+ try {
41+ connection .close ();
42+ } catch (JMSException ex ) {
43+ log .warn ("Couldn't close JMSConnection: " , ex );
44+ }
45+ }
46+ }
47+
48+ @ Override
49+ protected void doPost (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
50+ String result ;
51+ try {
52+ log .info ("Start sending" );
53+ req .setCharacterEncoding ("UTF-8" );
54+ resp .setCharacterEncoding ("UTF-8" );
55+ String users = req .getParameter ("users" );
56+ String subject = req .getParameter ("subject" );
57+ String body = req .getParameter ("body" );
58+ result = sendJms (users , subject , body );
59+ log .info ("Processing finished with result: {}" , result );
60+ } catch (Exception e ) {
61+ log .error ("Processing failed" , e );
62+ result = e .toString ();
63+ }
64+ resp .getWriter ().write (result );
65+ }
66+
67+ private synchronized String sendJms (String users , String subject , String body ) throws JMSException {
68+ TextMessage testMessage = session .createTextMessage ();
69+ testMessage .setText (subject );
70+ producer .send (testMessage );
71+ return "Successfully sent JMS message" ;
72+ }
73+ }
0 commit comments