AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2011, 07:38   #1  
Genghis is offline
Genghis
Участник
 
3 / 10 (1) +
Регистрация: 23.06.2011
Новые методы через AxaptaComConnector
Здравствуйте. Прошу совета по сложившейся ситуации.
Стоит сервер аксапты, работает себе круглосуточно с редкими перезагрузками.
И вышло так, что понадобился внешний доступ через AxaptaComConnector. Все прекрасно работает, подключается, методы вызываются. Но только уже созданные. Если дописать метод и попытаться вызвать его извне, то выдается сообщение о том, что его нет "Ошибка времени выполнения. : 'имя_класса' Объект не имеет метода "имя_метода"".
Вопрос - можно как-то без перезагрузки сервера сделать этот метод доступным в коннекторе для внешних приложений? (в данном случае подключается php-скрипт).
Старый 23.06.2011, 07:52   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
На сколько я помню, в такой ситуации перезагржать можно не AOS, а connector. Если проводить аналогию с обыкновенным windows-клиентом, то в случае изменения объектов приложения старые подключённые пользователи ещё видят предыдущее закэшированное состояние приложения, а новые - уже новое.
Возможно вместо перезагрузки стоит попробовать обновлять кэш.

.NET business connector не видит изменений в коде Аксапты
Способы почистить локальный кеш всем пользователям?

Последний раз редактировалось S.Kuskov; 23.06.2011 в 07:59.
Старый 23.06.2011, 08:34   #3  
Genghis is offline
Genghis
Участник
 
3 / 10 (1) +
Регистрация: 23.06.2011
Хм... кеша в documents and settings не нашлось. Если пользователь переподключится, кеш обновится, но как бы так сделать, чтобы не переподключаться?
Старый 23.06.2011, 11:46   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от Genghis Посмотреть сообщение
Хм... кеша в documents and settings не нашлось. Если пользователь переподключится, кеш обновится, но как бы так сделать, чтобы не переподключаться?
На 100% вам поможет следующая строка вначале кода;

Код:
connector.CallStaticClassMethod("SysFlushAOD", "doFlush");
Но это решение мне самому не очень нравится, использую как временное.
Старый 23.06.2011, 08:42   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Genghis Посмотреть сообщение
Стоит сервер аксапты, работает себе круглосуточно с редкими перезагрузками. Если дописать метод и попытаться вызвать его извне, то выдается сообщение о том, что его нет.
А у вас АОС один-единственный или же кластер? Дописывали метод именно на том АОСе, к которому подключается Business Connector? А то если АОСов несколько, то они могут очень долго не видеть изменений в приложении, сделанных на другом АОСе.
Старый 23.06.2011, 08:57   #6  
Genghis is offline
Genghis
Участник
 
3 / 10 (1) +
Регистрация: 23.06.2011
На самом деле их около 8, все на разных машинах в сети. Но мы сейчас работаем с одним конкретным.
Вообще сейчас пронаблюдали, кеш обновился где-то за 20 минут. Это вполне приемлемо для наших задач, поэтому думаю можно мозг не ломать.
Спасибо вам за помощь и советы.
Старый 23.06.2011, 09:38   #7  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Сервис-средства разработки-объекты приложения:
-обновить словарь
-обновить данные
-обновить AOD
При работе с EP это помогает, должно и в вашем случае.
Старый 23.06.2011, 10:16   #8  
EfimV is offline
EfimV
Участник
 
30 / 22 (1) +++
Регистрация: 19.04.2008
Адрес: Москва
Сталкивался с похожей ситуацией.
Есть ещё такая особенность. Если прошло не добавление нового метода, а изменение существующего. То уже никакие действия, кроме перезагрузки АОС не помогали.

Если вам это критично то, как вариант, можно поднять отдельный АОС для конектора.
И перезагружать только его при внесении изменений в логику.
Старый 23.06.2011, 11:40   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Genghis Посмотреть сообщение
На самом деле их около 8, все на разных машинах в сети.
Тогда вместе с накатыванием изменений нужно обязательно выполнять дополнительные действия на других AOS'ах, иначе выполняемая на них бизнес-логика может разъехаться, со всеми вытекающими...
Цитата:
Сообщение от jonny Посмотреть сообщение
Сервис-средства разработки-объекты приложения:
-обновить словарь
-обновить данные
-обновить AOD
И так на каждом AOS'е?..
Цитата:
Сообщение от EfimV Посмотреть сообщение
Есть ещё такая особенность. Если прошло не добавление нового метода, а изменение существующего. То уже никакие действия, кроме перезагрузки АОС не помогали.
На самом деле не все так плачевно - в таких случаях помогает перекомпиляция соотв. объекта приложения на каждом AOS'е, в случае класса - лучше инкрементная. Понятно, что если AOS'ов много, то вручную заходить на каждый лениво. Мы для этих целей приделали классец, который висит в контекстном меню в AOT. При выборе соотв. пункта контекстного меню, скажем, для проекта, соотв. объекты приложения сначала компилируются в текущей сессии, а потом, если все прошло без ошибок, формируется xml-файлик для запуска компиляции из командной строки, и для каждого активного AOS'а из SysServerSessions, кроме текущего, последовательно запускается клиент с этим файликом, который компилит нужные объекты приложения на соот. AOS'е, за счет чего каждый из них подхватывает изменения. Последовательный запуск компиляции нужен для того, чтобы AOS'ы не конфликтовали при попытке обновить одни и те же файлы приложения. Разумеется, если меняется код, выполняемый на клиенте, изменения в той или иной клиентской сессии могут подхватиться не сразу.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получение структуры таблиц... через AxaptaCOMConnector Dolter DAX: Программирование 1 23.12.2007 14:57
Проблемы с AxaptaCOMConnector Old DAX: Программирование 1 26.07.2007 10:34
AxaptaCOMConnector Yari DAX: Программирование 3 14.04.2006 15:25
AxaptaComConnector для новичка murad DAX: Программирование 8 05.10.2005 15:30
Печать накладной и счёта-фактуры через AxaptaCOMConnector mpogorelov DAX: Программирование 0 25.02.2005 18:28

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:17.