Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dызов SVN команд через ProcessBuilder 
V
    Опции темы
Andy_L20066
Дата 16.11.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 10.3.2008

Репутация: нет
Всего: 1



Привет

есть у меня ProcessBuilder который запускает внешнюю програмку (svn cleanup, svn update) которая соответственно что-то пишет в InputStream. Локально все отрабатывает, а вот если деплою свой модуль на сервер - то Process который порождается ProcessBuilder - зависает.... :
1. проблема в том что всегда при запуске процеса (Треда) нужно вычитывать полностью InputStream? Если да - то как лучше такое сделать: запускать чтение из InputStream в отдельном потоке? Какие есть best practices по данному делу?  

2. Может эсть какая нибудь либа для джавы чтоб можно было дергать SVN команды? Может тогда и эти потоки можно будет не использовать?

Спасибо
PM MAIL ICQ   Вверх
jk1
Дата 16.11.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Есть вот такая библиотека для работы с svn из Java


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Andy_L20066
Дата 16.11.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 10.3.2008

Репутация: нет
Всего: 1



Спасибо, нарыл сразу после того как вопрос задал...., изучаю чего она может.... ну а вот с потоками хотелось бы всетаки разобратся
PM MAIL ICQ   Вверх
Andy_L20066
Дата 16.11.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 10.3.2008

Репутация: нет
Всего: 1



вообщем не знаю в чем может быть проблема, процесс '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 виснет 
PM MAIL ICQ   Вверх
Andy_L20066
Дата 17.11.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 10.3.2008

Репутация: нет
Всего: 1



вообщем решил через эту либу... с потоками нету времени разбиратся )
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.