14.01.2003, 12:54 | #1 |
Участник
|
Программный перезапуск AOS
Можно ли программно мягко перезапустить AOS внешней программой?
Чтобы пользователям рассылались предупреждения и они не могли логиниться, пока сервер останавливается. Изначально задача стояла так: периодически мягко перезапускать AOS. |
|
14.01.2003, 13:34 | #2 |
Шаман форума
|
Что за беда вынудила так часто его перезапускать?
|
|
14.01.2003, 14:21 | #3 |
Участник
|
AOS - стандартный NT-сервис. используй команды NET START "имя сервиса", NET STOP "имя сервиса".
|
|
14.01.2003, 14:54 | #4 |
Участник
|
lbs, это не мягкий перезапуск AOS'а. Предложенный способ, конечно, очень эффективный :-)
нужно, чтобы эффект при остановке AOS'а был такой же, как при нажатии кнопки Stop в окне Server Manager, а именно предупреждение уже подключенных юзеров и запрет на подключение новых, пока сервер останавливается. ps: про беду ничего вразумительного ответить не могу. и вообще это не принципиальный вопрос - гораздо интереснее подумать, как это сделать :-) |
|
14.01.2003, 15:09 | #5 |
Шаман форума
|
а вот и нет - гораздо интереснее подумать, как этого не делать
можно, конечно, пробовать лечить все глюки таким способом :-)) можно еще взять на вооружение периодическую переинсталляцию как говорил мне когда-то один системный администратор, "нужно чаще форматировать винчестер" |
|
14.01.2003, 15:36 | #6 |
Участник
|
Tony... я бы предложил придерживаться рекомендаций производителя и не запускать боевое приложение на одном сервере вместе с др. приложениями. Потом может дороже выйти... например, вы знаете сколько стоит 30 минут простоя вашего коммерческого отдела?
|
|
14.01.2003, 15:55 | #7 |
Участник
|
lbs, может я чего-то не понял...
задача стоит такая: мягко и нежно остановить AOS для того, чтобы произвести репликацию данных, и потом запустить его снова. Это надо делать периодически и не руками. Тушить сервер надо для того, чтобы юзвери не успели поменять кучу данных во время процесса репликации. Жестокая остановка сервиса не подходит. |
|
14.01.2003, 16:35 | #8 |
Участник
|
Как решить задачу в лоб - не знаю.
Думаю, что ты уже нашел, как передать сообщения пользователям. AOSSessionInfo::sendMessage(sesId, title, message); Также думаю, что ты уже нашел, как принудительно завершить сессию. boolean _force = true; infolog.shutdown(_force); А вот как программно дать команду AOS'у? Не знаю. Может быть используя SysinfoAction? Но это вроде изврат. Все равно остается задача как программно запустить AOS после всего этого безобразия... Нужны параметры командной строки для ax32serv.exe Классный вопрос. Если найдешь, ответ, то дай знать пожалуйста. |
|
14.01.2003, 16:40 | #9 |
Участник
|
Кстати, как и говорил glibs можно поставить режим запуска ondemand.
Тогда принудительно AOS запускать не нужно. Остается решить задачу программно завершить AOS. Для этого нужно, чтобы AOS выполнил команду infolog.shutdown(true); по некоторой команде. Может все же через SysInfoAction? |
|
16.01.2003, 11:52 | #10 |
Участник
|
Если кому интересно, то всё закончилось написанием программки на дельфи, которая посылает сообщения в окошко сервер менеджера. Конечно немножко кривовато, но способа проще я не нашёл.
|
|
12.07.2005, 18:38 | #11 |
Участник
|
если не сложно, не могли бы Вы привести кусок кода, который посылает сообщение
интересует какое именно сообщение нужно посылать и параметры |
|
10.05.2006, 14:03 | #12 |
Участник
|
Цитата:
Сообщение от Tony Green
Если кому интересно, то всё закончилось написанием программки на дельфи, которая посылает сообщения в окошко сервер менеджера. Конечно немножко кривовато, но способа проще я не нашёл.
Заранее благодарен.
__________________
Александр |
|
10.05.2006, 17:42 | #13 |
Участник
|
Ну Tony Green не отвечает, попробую я
Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS). Функции - AosStart(HostName, AOSName) - запуск AOS AosStop(HostName, AOSName) - остановка AOS AosStatus(HostName, AOSName) - плучение статуса выполнения AOS PS. Для работы функций требуется запущенный Server Manager PPS Удалил вложение, исправление с правами доступа ниже
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 24.05.2006 в 11:30. Причина: Исправление прав доступа |
|
11.05.2006, 08:29 | #14 |
Участник
|
Цитата:
Сообщение от AndyD
Ну Tony Green не отвечает, попробую я
Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS). Функции - AosStart(HostName, AOSName) - запуск AOS AosStop(HostName, AOSName) - остановка AOS AosStatus(HostName, AOSName) - плучение статуса выполнения AOS PS. Для работы функций требуется запущенный Server Manager Большое спасибо. Только надо, чтобы остановка АОС программно выполнялась не из Аксапты. Если и такой программный код есть, то буду очень признателен.
__________________
Александр |
|
11.05.2006, 08:36 | #15 |
Участник
|
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
__________________
Axapta v.3.0 sp5 kr2 |
|
11.05.2006, 08:42 | #16 |
Участник
|
Цитата:
Сообщение от AndyD
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
__________________
Александр |
|
11.05.2006, 11:42 | #17 |
Участник
|
Прошу прощения, насчет командной строки погорячился.
Добавил новые функции для вызова из нее. Вызывается так Запуск AOT rundll32 AosMgr.dll,AosStart_RunDll Axapta "Aaa 1" 1 Остановка AOT rundll32 AosMgr.dll,AosStop_RunDll Axapta "Aaa 1" 1 После имени вызываемой функции указывается имя хости или IP адрес. Второй параметр - имя AOS. Если в имени есть пробелы, то заключить в двойные кавачки. Третий параметр - показывать (1)/не показывать (0 или не указывать параметр) сообщение в случае ошибки Так же исправил ошибку при передаче имени AOS на сервер Вложение в сообщении выше обновил.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: andy.l (1), Logger (10). |
15.05.2006, 15:16 | #18 |
Участник
|
"Круто"
Получается, что с любого компа можно остановить AOS! Так это же доступ без контроля, а проще говоря дырка. |
|
15.05.2006, 15:28 | #19 |
Участник
|
Да. И я о том же
Dll практически делает то-же самое, что и AxCtrl.exe
__________________
Axapta v.3.0 sp5 kr2 |
|
19.05.2006, 13:57 | #20 |
Участник
|
Никто не пытался осуществить вышеописанное не в AXAPTA? Я пытаюсь сделать на делфи, но никак не получается, ошибку выдаёт. Вот код
Цитата:
...
function AOS(HostName,AOSName:String):integer;stdcall; external 'AosMgr.dll' name 'AosStatus'; procedure TForm1.Button1Click(Sender: TObject); begin case AOS('10.10.0.10','AXAPTA') of <-ЗДЕСЬ ОШИБКА -1: Label1.Caption := 'Connection timed out'; -2: Label1.Caption := 'Connection refused'; -3: Label1.Caption := 'Protocol error'; -4: Label1.Caption := 'Server manager not started'; -5: Label1.Caption := 'AOS stopped'; -6: Label1.Caption := 'AOS start pending'; -7: Label1.Caption := 'AOS stop pending'; -8: Label1.Caption := 'AOS running'; -9: Label1.Caption := 'AOS not found on server'; -10: Label1.Caption := 'Cannot assign requested address'; -11: Label1.Caption := 'Unknown TCP error'; -12: Label1.Caption := 'AOS unknown status'; else Label1.Caption := 'Unknown error';; end; end; ... Последний раз редактировалось Migel_84; 19.05.2006 в 14:00. |
|
Теги |
aos, ax3.0, download, faq, администрирование, законченный пример |
|
|