powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перезапустить windows-службу из программы на java?
66 сообщений из 66, показаны все 3 страниц
Как перезапустить windows-службу из программы на java?
    #39576238
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Появилось необходимость из программы, написанной на джаве, перезапускать службу windows. Пока только удалось частично этого добиться следующим образом.

1. Написал такой бат-ник:

автор @echo off
chcp 1251
net stop ActiveMQ && net start ActiveMQ



2. Создал ярлык на этот бат-ник, установил у него в свойствах, чтобы он запускался от имени администратора
3. Написал в джаве такой метод:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public static Process runCommandForApplication(String command) throws Exception {
            if (command == null || command.length() < 1) {
                return null;
            }
            if (isWindows()) {
                command = command.replace('/', '\\');
            } else {
                command = command.replace('\\', '/');
            }
            Process proc = Runtime.getRuntime().exec(command);
            return proc;
        }

        public Process runCommand(Collection command) throws Exception {
            if (command == null || command.size() < 1) {
                return null;
            }
            String[] cmd = new String[command.size()];
            int iCmd = 0;
            for (Iterator<String> iter = command.iterator(); iter.hasNext(); ) {
                String commandPart = iter.next();
                ;
                if (isWindows()) {
                    commandPart = commandPart.replace('/', '\\');
                } else {
                    commandPart = commandPart.replace('\\', '/');
                }
                cmd[iCmd++] = commandPart;
            }
            Process proc = Runtime.getRuntime().exec(cmd);
            return proc;
        }



Вызываю этот метод так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    public class View extends JFrame {
        private static final int WINDOW_WIDTH = 600, WINDOW_HEIGHT = 500;
        private static final String FILE_BAT = "F:\\TEMP\\activemq-restart.bat.lnk";
    ...
    //в теле слушателя нажатия на кнопку
    Utils.runCommandForFile(FILE_BAT);
    ...
    }



В итоге он у меня всё делает (пока в скрипте прописал только остановку службы), но перед этим запрашивает в отдельном окне имя администратора и его пароль. И пока не знаю, как сделать, чтобы ввод имени пользователя и его пароля происходил в автоматическом режиме. Пытался сделать это сразу в скрипте, но у меня ничего не получалось.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576262
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гошпади, сколько говнокода-то. Вы понимаете что половину вашего кода можно выкинуть и хуже от этого работать не станет?
А вы знаете что разделители пути не ограничиваются символами / и \? И что под виндой можно использовать оба?
А вопрос по-сути к Java отношения не имеет. Windows не даёт простому пользователю исполнять админские действия без подтверждения. Стандартный UAC. Можете своё приложение под админом сразу запустить и тогда вопросов не будет.
Возможно через .lnk выйдет, если вы там укажете всегда запускать под админом, а потом командой (start?) будете запускать именно lnk.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576284
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заметил, что выложил код не того метода, вот правильный:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    public static Process runCommandForFile(String command) throws Exception {
        if (command == null || command.trim().length() < 1) {
            return null;
        }
        command = command.trim();
        File file = new File(command);
        command = file.getAbsolutePath();
        String[] cmd = new String[3];
        String osName = System.getProperty("os.name");
        if (osName.startsWith("Windows 9") || osName.startsWith("Windows ME")) {
            cmd[0] = "command.com";
            cmd[1] = "/C";
            cmd[2] = command;
        } else if (osName.startsWith("Linux") || osName.startsWith("FreeBSD")) {
            cmd[0] = "/bin/sh";
            cmd[1] = "-c";
            cmd[2] = command;
            File shellFile = new File("mpo_shell.sh");
            if (shellFile.exists() && shellFile.canRead()) {
                cmd[1] = "mpo_shell.sh";
            }
        } else {
// default + Windows
            cmd[0] = "cmd.exe";
            cmd[1] = "/C";
            cmd[2] = command;
        }
        Process proc = Runtime.getRuntime().exec(cmd);
        return proc;
    }
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576291
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczГошпади, сколько говнокода-то. Вы понимаете что половину вашего кода можно выкинуть и хуже от этого работать не станет?
А вы знаете что разделители пути не ограничиваются символами / и \? И что под виндой можно использовать оба?
А вопрос по-сути к Java отношения не имеет. Windows не даёт простому пользователю исполнять админские действия без подтверждения. Стандартный UAC. Можете своё приложение под админом сразу запустить и тогда вопросов не будет.
Возможно через .lnk выйдет, если вы там укажете всегда запускать под админом, а потом командой (start?) будете запускать именно lnk.
1. Код не мой, мне его дали (взяли с какого-то американского проекта).
2. Во втором пункте я и писал, что использовал ярлыки и прописывал там запуск с админскими правами.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576313
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

агонь. вообще есть константа File.separator ))) как раз то что надо тсу ))

а вообще да. как то видел код навроде:

иф (Файл.сепаратор="/") зен ос.сетТайп("линукс") елс ос.сетТайп("виндовс")

тс, пиши батник, а да ты уже его написал )) и запускай его вот этой командой:

cmd[0] = "cmd.exe";
cmd[1] = "/C";
cmd[2] = command;
}
Process proc = Runtime.getRuntime().exec(cmd);

которую ты в принципе тоже уже написал.

в чем вопрос то? в админских правах? ну так ты можешь происать запуск батника с нужными правами. или самой джаве дать в системе админские права. но тут как бы не вопрос к джаве, а к админам твоей виндовс-машины.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576322
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaT,
Извините, вы пьяны???) И обратились не ко мне, и пишите так сумбурно. Ещё и как-то невнимательно читаете.))

Я думал о том, что может быть в джаве есть что-то, чтобы сразу запустить команду или программу с правами администратора (и без запроса пароля). Как я писал в своём первом посте, если вешать права на линк и его запускать, то запрашивается логин и пароль. Нужно, чтобы всё происходило в авто-режиме.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576327
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichЯ думал о том, что может быть в джаве есть что-то, чтобы сразу запустить команду или программу с правами администратора (и без запроса пароля). Как я писал в своём первом посте, если вешать права на линк и его запускать, то запрашивается логин и пароль. Нужно, чтобы всё происходило в авто-режиме.
В Java ничего такого нет. Фишка чисто виндовая и кросплатформенной Java на неё плевать. Но для виндовс ещё куча способов решить вопрос.
https://stackoverflow.com/questions/11041509/elevating-a-processbuilder-process-via-uac/11042773
https://stackoverflow.com/questions/4662574/how-do-i-elevate-my-uac-permissions-from-java
http://www.naturalborncoder.com/java/2012/08/02/starting-and-stopping-services-from-java/

Ищите инфу про UAC. На чистой Java тут ничего не закодить.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576328
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я то как раз нет а вы - хз. правами в системе заведует только одна программа. и эта программа называется "операционная система", а не та, которую вы пишете. дайте права своей жвм права админа, и никакие пароли у вас требоваться не будут. если не хотите - можете внутри скрипта прописать их.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576331
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichЗдравствуйте. Появилось необходимость из программы, написанной на джаве, перезапускать службу windows.Не может быть такой необходимости.
Примите это как данность и озвучьте, пожалуйста, проблему, которую вы решаете, а не способ, который вы придумали.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576338
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у них по ходу месадж брокер периодически зависает и они решили написать патч для программы для перезапуска очереди ))
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576341
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich
Код: java
1.
        if (osName.startsWith("Windows 9") || osName.startsWith("Windows ME"))

У мелкомягких учитесь? У них в SDK тоже есть условия на "мотороллеры" из прошлого тысячелетия.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576342
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaT,
в точку. Как раза месседж брокер периодически гонит (к сожалению без внешних ошибок, служба продолжает работать нормально), и нужно его перезапускать, чтобы всё заработало.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576344
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
нет, древний код. Проект начало 2000-ых. Проект называется "Протеже". Какой-то там американский институт разработал. Насколько я знаю, у меня в команде это кто-то взял с сайта оракла по джаве (из примеров).
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576346
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichandreykaT,
в точку. Как раза месседж брокер периодически гонит (к сожалению без внешних ошибок, служба продолжает работать нормально), и нужно его перезапускать, чтобы всё заработало.
решение канеш рабочее, тут не поспоришь, но это, простите, как понос винной пробкой лечить. в принципе, на какое-то время сдержит.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576348
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichмесседж брокер периодически гонит (к сожалению без внешних ошибок, служба продолжает работать нормально), и нужно его перезапускать, чтобы всё заработало.1. Озадачьте сисадминов разбором проблем со службой. С вашей стороны - логи службы, с их - аудит системы. Ну или всё с их стороны, а с вашей - ссылки на доки;
2. В качестве временного костыля зарядите в планировщик ежечасный перезапуск службы - всяко лучше вашего велосипеда;
2.1. Если есть критерий зависания - сделайте из этого критерия триггер для вашего задания - будет перезапуск по условию, а не по времени;
3. Курите "sc sdset", но сразу предупреждаю, что у SDDL - марсианский синтаксис.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576352
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichНасколько я знаю, у меня в команде это кто-то взял с сайта оракла по джаве (из примеров).Есть у программистов плохая привычка решать сисадминские задачи прикладным кодом.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576355
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или так: есть у программистов привычка решать сисадминские задачи
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576358
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продублирую ответ из windows-подфорума: выкинуть враппер Тануки и взять Apache Procrun .
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576359
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ActiveMQ это же тоже Java. Можно написать обертку, которая будет слушать сигналы и закрывать Java процесс. Не исключено что такая уже есть. А Windows Service сам его перезапустит
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576365
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576392
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да способов мониторинга дофига , но лично я вангую проблемы service wrapper, который у Тануки сильно ограничен в бесплатной версии.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576544
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, Попробовал. На втором шаге выдаёт:
автор".\activemq" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576547
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, Критерием является ошибка (эксепшн) в программе.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576549
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov, мониторинг мне не нужен, мне нужно управление.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576571
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichBlazkowicz, Попробовал. На втором шаге выдаёт:
Ну, вы бы это. Прежде чем что-то делать попробовали бы разобраться? Командная строка не важна. Важно что должен быть JMX интерфейс у брокера, у которого может оказаться команда перезапуска.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576633
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, Извините, не понял, про что Вы.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576653
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichBlazkowicz, Извините, не понял, про что Вы.

Вот такой код вы напишете у себя
https://docs.oracle.com/javase/tutorial/jmx/remote/custom.html
На сколько я понимаю
Performing Operations on Remote MBeans

ObjectName, адрес, порт, логин и пароль вам нужно взять из настроек и документации к вашей версии ActiveMQ
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576705
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichмониторинг мне не нужен, мне нужно управление.Документацию не пробовали читать?
А там не только про мониторинг.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576717
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Просмтривал. Что-то не нашёл, где управлять службой =(
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576724
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichПросмтривал. Что-то не нашёл, где управлять службой =(
Вам шашечки или ехать? Вам обязательно службу перестартовать или достаточно ActiveMQ брокер?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576777
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
ну он запущен в качестве службы, соответственно, нужно перезапускать службу. Или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576810
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichну он запущен в качестве службы, соответственно, нужно перезапускать службу. Или я чего-то не понимаю?
Наверное, не понимаете, что если брокеру сказать "перезепусти себя", то можно добится аналогичного результата. Служба это всего лишь обертка над java процессом. Не важно перезапустите ли вы службу или java процесс.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576846
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Хм, и какие тогда у меня есть варианты? Какие способы достижения моей цели? А то сколько разной малознакомой информации, уже голова кругом идёт.....
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576923
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема: зависает java-приложение, запущенное сервисом.

1. Приложение - Apache ActiveMQ.
Идём на сайт, читаем доку, понимаем, что используется Tanuki-wrapper - древняя версия, которую рекомендуется обновить.
Идём на сайт Тануки, читаем. Видим три редакции, смотрим ограничения бесплатного варианта (Community). Оп-па - не поддерживается 64-разрядная винда. В топку. Гуглим и находим procrun среди Apache Commons. Читаем доку, готовим запуск сервиса "в новой обёртке".

2. Наверное, брокер виснет не просто так, а с какими-то симптомами.
Читаем доку на предмет мониторинга, попутно обнаруживаем разные варианты консолей и, в том числе, возможность перезапуска брокера. Понимаем, что перезапуск службы не очень-то и нужен.
Продолжаем читать настройку логирования, ревизируем параметры JVM, в которой работает брокер, думаем.

Собираем всё заготовленное в кучу, запускаем новый вариант сервиса и начинаем смотреть на его работу.

Вот ни разу не космические технологии - всё доступно сисадмину средней руки, тестировщику и, наверное, специалисту техподдержки "от второй линии".

P.S. Отсутствие ссылок на сайты и разделы документации - не упущение.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576937
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Правда, если оно с OOME умирает, наверное лучше таки службу перезапускать. А то JMX может и не ответить вовсе.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576959
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Правда, если оно с OOME умирает, наверное лучше таки службу перезапускать.Насколько я помню, у procrun есть проблема: когда JVM падает с нулевым кодом выхода - служба будет остановлена без перезапуска. Такого, чтобы процесс упал, а обёртка продолжала работу, вроде, нет.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576964
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае, только что (ноябрь 2017) вышел Commons Daemon 1.1.0 где, судя по трекеру, обеспечена совместимость с Java9 и, вероятно, другие ошибки поправлены.
Что до OOM ...
Использовать сервис в 32-разрядной JVM на 64-разрядной винде без веских причин - себя не уважать.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576972
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Так JVM может не упасть а уйти в FullGC навсегда. Или ещё в какой бесконечный цикл.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576975
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТакого, чтобы процесс упал, а обёртка продолжала работу, вроде, нет.Точнее - такого не может быть при нормальном варианте запуска: procrun.exe это java.exe, который умеет работать сервисом. Плюс-минус некоторые фичи.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576978
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТак JVM может не упасть а уйти в FullGC навсегда. Или ещё в какой бесконечный цикл.Может, наверное.
Но ведь для таких случаев и существуют и "настройка логирования" и "ревизия параметров JVM"?
Ну то есть, обнаружив подобные аномалии мы должны исключить их, а паллиативы применять исключительно внешним образом - не впечатывая в код.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39576988
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТак JVM может не упасть а уйти в FullGC навсегда. JDK-6330863 помечен как решённый 2012-03-24 и там же есть обходные варианты.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577002
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Вот что в логах ПО, которое использует ActiveMQ:
авторjavax.jms.JMSException: Could not connect to broker URL: tcp://172.26.11.4:61616. Reason: java.lang.IllegalStateException: Timer already cancelled.

По первому пункту: у меня 64-битная винда, и activemq нормально работает. На сервере (где стоит наше рабочее ПО) возможно стоит 32-битная ОС.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577010
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в примерх к ActiveMQ такой код:
Код: java
1.
2.
3.
4.
        BrokerService broker = new BrokerService();
        broker.setUseJmx(true);
        broker.addConnector("tcp://localhost:61616");
        broker.start();


Но он у меня с ошибкой вываливается при добавлении коннектора:
авторjava.io.IOException: Failed to bind to server socket: tcp://localhost:61616 due to: java.net.BindException: Address already in use: JVM_Bind
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:34)
at org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:144)
at org.apache.activemq.transport.tcp.TcpTransportFactory.doBind(TcpTransportFactory.java:62)
at org.apache.activemq.transport.TransportFactorySupport.bind(TransportFactorySupport.java:40)
at org.apache.activemq.broker.BrokerService.createTransportConnector(BrokerService.java:2520)
at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:339)
at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:329)
at maxlich.app.MessageBrokerManager.<init>(MessageBrokerManager.java:18)
at maxlich.app.MessageBrokerManager.instance(MessageBrokerManager.java:27)
at maxlich.app.View.lambda$createMainPanel$0(View.java:46)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231)
at org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:141)
... 44 more
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577012
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovВ любом случае, только что (ноябрь 2017) вышел Commons Daemon 1.1.0 где, судя по трекеру, обеспечена совместимость с Java9 и, вероятно, другие ошибки поправлены.
Что до OOM ...
Использовать сервис в 32-разрядной JVM на 64-разрядной винде без веских причин - себя не уважать.
да, кстати, у меня 32-битная jdk.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577073
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichНашел в примерх к ActiveMQ такой код:
Но он у меня с ошибкой вываливается при добавлении коннектора:
Вижу код - запускаю не думая. Что именно вы этим кодом хотели добиться?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577121
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichВот что в логах ПО, которое использует ActiveMQ:
Код: plaintext
1.
javax.jms.JMSException: Could not connect to broker URL: tcp://172.26.11.4:61616.
  Reason: java.lang.IllegalStateException: Timer already cancelled.
Поправил цитирование.
Вероятно, за отведённое время не удалось достучаться до никому (кроме вас) неизвестного 172.26.11.4.
Вероятно, что и эту ситуацию можно как-то разрулить настройками ActiveMQ.По первому пункту: у меня 64-битная винда, и activemq нормально работает.1. 64-разрядная винда и 64-разрядная JVM - разные вещи. Community редакция Tanuki-wrapper не работает с 64-разрядной JVM.
2. ActiveMQ может работать и как приложение и как сервис.На сервере (где стоит наше рабочее ПО) возможно стоит 32-битная ОС.Последние Windows Server с 32-разрядными вариантами - 2003 и 2008. Оба уже сняты с поддержки.
Начиная с Windows Server 2008 R2 (вышел вместе с семёркой в 2009 году) существуют только 64-разрядные серверные винды.
В любом случае, нет смысла использовать 32-разрядные винды, если на хосте хотя бы два гигабайта оперативки, а операционная система - новее Windows Server 2003.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что ТС-у нужно от Windows?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577152
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА что ТС-у нужно от Windows?Типа, под линуксом ActiveMQ не глючит, даже если её кривыми руками развернуть?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577155
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА что ТС-у нужно от Windows?
Чтобы UAC сидел ровно на попе и не возникал.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577157
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧтобы UAC сидел ровно на попе и не возникал.С этим-то вообще никаких проблем - запустили "от администратора" то приложение, в котором костыляется перезапуск службы и UAC больше не пикает.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577245
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovMaxLichВот что в логах ПО, которое использует ActiveMQ:
Код: plaintext
1.
javax.jms.JMSException: Could not connect to broker URL: tcp://172.26.11.4:61616.
  Reason: java.lang.IllegalStateException: Timer already cancelled.
Поправил цитирование.
Вероятно, за отведённое время не удалось достучаться до никому (кроме вас) неизвестного 172.26.11.4.
Вероятно, что и эту ситуацию можно как-то разрулить настройками ActiveMQ.По первому пункту: у меня 64-битная винда, и activemq нормально работает.1. 64-разрядная винда и 64-разрядная JVM - разные вещи. Community редакция Tanuki-wrapper не работает с 64-разрядной JVM.
2. ActiveMQ может работать и как приложение и как сервис.На сервере (где стоит наше рабочее ПО) возможно стоит 32-битная ОС.Последние Windows Server с 32-разрядными вариантами - 2003 и 2008. Оба уже сняты с поддержки.
Начиная с Windows Server 2008 R2 (вышел вместе с семёркой в 2009 году) существуют только 64-разрядные серверные винды.
В любом случае, нет смысла использовать 32-разрядные винды, если на хосте хотя бы два гигабайта оперативки, а операционная система - новее Windows Server 2003.
Ваши слова:
басил а. сидоровОп-па - не поддерживается 64-разрядная винда
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577248
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
ваша цЫтатаCommunity редакция Tanuki-wrapper не работает с 64-разрядной JVM.
Выше указал, какая у меня JVM
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577250
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
tot zheActiveMQ может работать и как приложение и как сервис.
выше уже писал про это. У меня служба (service).
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577251
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczMaxLichНашел в примерх к ActiveMQ такой код:
Но он у меня с ошибкой вываливается при добавлении коннектора:
Вижу код - запускаю не думая. Что именно вы этим кодом хотели добиться?
Ожидал, что он стартанёт брокер.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577253
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovmaytonА что ТС-у нужно от Windows?Типа, под линуксом ActiveMQ не глючит, даже если её кривыми руками развернуть?
Хм, действительно, под линуксом бы наверно было проще его перезапустить из своей программы. Но клиент приверженец продуктов от мелкомягких. Да и у меня нет прямой связи с ним (клиентом).
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577382
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichВаши слова:Да, мои. Только это не вполне корректная формулировка, а вы не, глядя в оригинал и не пытаясь поправить меня, продолжаете талдычить неверную хрень исходя из неверных исходных данных.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577386
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichОжидал, что он стартанёт брокер.
Да. Стартанёт брокер внутри вашей JVM. Того брокера что у вас уже запущен внутри службы это никак не коснется.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577421
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Конечно, лучше на другого спихнуть вину, чем признать свою.
Цитата с сайта этого раппера:
автор64-bit Windows versions of the Java Service Wrapper are not currently being made available in the Community Edition.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577423
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczMaxLichОжидал, что он стартанёт брокер.
Да. Стартанёт брокер внутри вашей JVM. Того брокера что у вас уже запущен внутри службы это никак не коснется.
А если попытаться остановить брокер используя те же классы, объекты и методы, то это тоже не коснётся брокера, запущенного снутри службы? Если да, то как тогда "доступаться" до него?
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577426
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут предлагали заменить раппер. А даже в последней версии activeMQ используется раппер от Тануки? И если да, то отсюда второй вопрос: если этот раппер такой древний и несовершенный, то почему они сами не используют свой более совершенный раппер Procrun
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577429
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLichто почему они сами не используют
Ну, блин всё же написано. Они его прикрутили, а потом там лицензия поменялась.
http://activemq.apache.org/java-service-wrapper.html
Но никто не мешает скачать новую версию и самому поставить.
Да, и завернуть в procrun самостоятельно тоже не велика задача.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577445
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Там про Procrun там и не слова.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577527
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxLich,

Код: java
1.
2.
String cmd = "notepad %WINDIR%/system32/drivers/etc/hosts";
Runtime.getRuntime().exec(String.format("powershell Start-Process \"%s\" -Verb runAs", cmd));


В этом случае Windows запросит подтверждения от самого пользователя:

...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577531
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanВ этом случае Windows запросит подтверждения от самого пользователяаналог sudo
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577691
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё пацаны, расходимся. Это не служба. Вернее не совсем служба. Используется не базовый раппер, а какая-то сторонняя программка.
...
Рейтинг: 0 / 0
Как перезапустить windows-службу из программы на java?
    #39577693
MaxLich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,
Так мне нужно втихую, так как это будет запускаться на сервере. В редких случаях.
...
Рейтинг: 0 / 0
66 сообщений из 66, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перезапустить windows-службу из программы на java?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]