venerdì 7 giugno 2013

Java lanciare un file .bat da una web app

Per lanciare un file .bat da una web application , oltre al comando nativo

java.lang.Runtime.getRuntime().exec("cmd /c ....");


è possibile utilizzare la libreria commons.exec (qui un tutorial sull'utilizzo).
Io ho utilizzato la versione 1.1..
Nel mio caso era necessario solo invocare il batch senza intercettare il risultato, ed ho fatto in questo modo (la jsp passava in un parametrochiamato batchVal il nome del .bat da invocare):

private void gestisciRichiesta(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  try
  {
     String batchDaInvocare=request.getParameter("batchVal");
     log.info("Parametro inviato: "+batchDaInvocare);
     CommandLine commandLine = new CommandLine(batchDaInvocare );
     DefaultExecutor executor = new DefaultExecutor();
     executor.setExitValue( 0 );
     executor.execute( commandLine );
  request.setAttribute("richiestaBatchInviata", "La richiesta di avvio batch alert è stata trasmessa al server, attendere la mail di risposta prima di verificare i risultati");
  }
  catch(Throwable t)
  {
   request.setAttribute("error", "Attenzione si è verificato un errore nell'invocazione del batch, messaggio "+t.getMessage()+" errore di tipo "+t.getClass().getName());
  }
  finally{
   RequestDispatcher rd=request.getRequestDispatcher("index.jsp");
   rd.forward(request, response);
  }
 }

Comunque con la libreria di apache è agevole anche il passaggio dei parametri il parsing dell'output.
Ad esempio si possono passare dei parametri invocando il mentodo addArgument sull'oggetto Command per aggiungere dei parametri al batch etc.

Nessun commento:

Posta un commento