1    package com.instantbank.lettertemplate.setLetterJob.web;
2    
3    import java.io.*;
4    import java.sql.*;
5    import java.util.ArrayList;
6    import java.util.StringTokenizer;
7    import javax.servlet.*;
8    import javax.servlet.http.*;
9    
10   // for working with JMS:
11   import javax.jms.Message;
12   import javax.jms.JMSException;
13   
14   // for working with EJB
15   import java.rmi.RemoteException;
16   import javax.naming.Context;
17   import javax.naming.InitialContext;
18   
19   import com.instantbank.component.lettersjobmdb.util.MessageSender;
20   import com.instantbank.lettertemplate.control.util.*;
21   import com.instantbank.common.utilcomponents.Debug;
22   import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
23   import com.instantbank.common.utilcomponents.LetterTemplateGlobals;
24   import com.instantbank.common.utilcomponents.JNDINames;
25   import com.instantbank.common.utilcomponents.CommonUtil;
26   
27   
28   /**
29    *  Servlet acting as a controller in order to create a JMS message for Launch job
30    *  action in setLetterJob usecase.
31    *
32    * @author InstantBank (Consuelo Franky)
33    * @created November 2002
34    */
35   public class LaunchJobServlet extends HttpServlet {
36   
37     /**
38      * for debugging
39      */
40     private Debug debug = null;
41   
42   
43     /**
44      *  init of servlet
45      *
46      * @exception ServletException
47      */
48     public void init() throws ServletException {
49       debug = new Debug();
50       debug.setDebugginOn(true);
51       debug.setPreMessage("** LaunchJobServlet: ");
52     }
53   
54   
55     /**
56      *  Create a JMS message for launching a job,
57      *  and sends acknowledge text to the browser
58      *
59      * @param request HTTP request
60      * @param response HTTP response
61      * @exception ServletException
62      * @exception IOException
63      */
64     public void doGet(HttpServletRequest request, HttpServletResponse response)
65        throws ServletException, IOException {
66       HttpSession session = request.getSession();
67       debug.println("new request=========================");
68   
69       if(CommonUtil.controlTimeout(request, response,
70         getServletConfig().getServletContext())) {
71         debug.println("invalidate session and return by timeout");
72         session.invalidate();
73         return;
74         // here there is a forward to /control_web/TimeOutPageOff.jsp
75         // prepared by controlTimeout()
76       }
77   
78       // get parameter from request:
79       Long jobId = new Long(request.getParameter("jobId"));
80   
81       // variables:
82       MessageSender mSender = null;
83       String server = request.getServerName();
84       int port = request.getServerPort();
85   
86       ServletOutputStream out = null;
87       try {
88         out = response.getOutputStream();
89   
90         mSender = new MessageSender
91           (server, port, LetterTemplateGlobals.LETTERS_JOB_JMS_QUEUE);
92   
93         String ctxProvider = mSender.getContextProviderUrl();
94         String initCtxFact = mSender.getInitContextFactory();
95   
96         String temporalPath
97            = (String)session.getAttribute(WebKeys.ImagesTemporalPath);
98         /*String rtf2foConfDir
99                      = (String)session.getAttribute(WebKeys.RtfToFoConfigPath);*/
100        String companyId = (String)session.getAttribute(WebKeys.CompanyId);
101        Long userId = (Long)session.getAttribute(WebKeys.UserId);
102  
103        String maxZipSize = CommonUtil.getApplicationProperty
104          (JNDINames.ZipLettersFileMaxSize);
105  
106        Message jobMsg = mSender.buildLetterJobMessage
107          (companyId, temporalPath,  /*rtf2foConfDir, */userId,
108          jobId, ctxProvider, initCtxFact, maxZipSize);
109  
110        mSender.send(jobMsg);
111  
112        // builds HTML text with acknowledge of launched job:
113        response.setContentType("text/html");
114        char ch = '"';
115        out.println("<link href=" + ch
116          + "/lettertemplate/control_web/instantbank.css" + ch
117          + " rel=" + ch + "stylesheet" + ch + ">");
118        out.println("<CENTER>");
119        out.println("<H1>Launched Letter Job Confirmation</H1>");
120        out.println("<H4>The current letter job was successfully queued.</H4><br>");
121        out.println("<H4>Letter Batch execution takes some time.</H4><br>");
122        out.println("<H4>Use " + ch + "Letter Batch Review" + ch + " to view Log.</H4>");
123        out.println("</CENTER>");
124        out.flush();
125  
126      }
127      catch(JMSException jex) {
128        // Release JMS resources in reverse order of their creation.
129        try {
130          mSender.release();
131        }
132        catch(Exception ex) {
133          debug.println(CommonUtil.stackTraceToString(ex));
134        }
135      }
136      catch(Exception e) {
137        debug.println("Exception:" + e);
138        debug.println(CommonUtil.stackTraceToString(e));
139        response.setContentType("text/html");
140        out.println("<H3>EXCEPTION: " + e + "</H3>");
141      }
142    }
143  
144  
145    /**
146     *  doPost has the same effect than doGet
147     *
148     * @param request Description of the Parameter
149     * @param response Description of the Parameter
150     * @exception ServletException
151     * @exception IOException
152     */
153    public void doPost(HttpServletRequest request, HttpServletResponse response)
154       throws ServletException, IOException {
155      doGet(request, response);
156    }
157  
158  }
159