вообщем не знаю в чем может быть проблема, процесс 'svn update' запускается через quartz job (джарка находится на JBoss), может quartz не дает доступа или как:
| Код | @MessageDriven(activationConfig = {@ActivationConfigProperty(propertyName = "cronTrigger", propertyValue = "0/30 * * * * ?")}) @ResourceAdapter("quartz-ra.rar") public class AnnotatedQuartzMDBBean implements Job { private static final Logger log = Logger.getLogger(AnnotatedQuartzMDBBean.class);
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { AnnotatedQuartzMDBBean.log.info("************** here in annotated!!!!"); SvnCleanUpCommand svnCleanUpCommand = new SvnCleanUpCommand(); svnCleanUpCommand.execute();
} }
|
код SVNCleanup
| Код | public class SvnCleanUpCommand extends AbstractCommand {
protected static final Logger logger = Logger.getLogger(SvnCleanUpCommand.class.getName());
public void execute() { logger.log(Level.INFO, "Executing 'svn cleanup'..."); ProcessBuilder builder = new ProcessBuilder("svn", "cleanup"); builder.redirectErrorStream(true); builder.directory(new File(Utils.loadProperties().getProperty("targetdir")));
Process processCln = null; try { processCln = builder.start(); } catch (IOException ex) { logger.log(Level.SEVERE, null, ex); } logger.log(Level.INFO, " Starting 'svn output reader' thread..."); StreamReaderThread outputReader = new StreamReaderThread(processCln.getInputStream(),"OUTPUT"); outputReader.start();
try { int result = processCln.waitFor(); // ТУТ ЗАВИСАЕТ logger.log(Level.INFO, "Process 'svn update' ended up with result: {0}", result); } catch (InterruptedException ex) { processCln.destroy(); } try { logger.log(Level.INFO, "Join man thread after completion of reading"); outputReader.join(); } catch (InterruptedException ex) { Logger.getLogger(SvnCleanUpCommand.class.getName()).log(Level.SEVERE, null, ex); } } }
|
тут StreamReader просто читает InputStream.... локально оно срабатывает, а на JBoss виснет |