powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перезапустить windows-службу из программы на java?
25 сообщений из 66, страница 2 из 3
Как перезапустить 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
25 сообщений из 66, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перезапустить windows-службу из программы на java?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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