Troubleshooting: различия между версиями
м |
|||
Строка 230: | Строка 230: | ||
* Определяйте все переменные в среде разработки, которые используете | * Определяйте все переменные в среде разработки, которые используете | ||
* Проектируйте маршрутизацию сообщений между процессами так, чтобы соответствие было ''один к одному'' (имеются в виду узлы '''Отправить сообщение''' и '''Принять сообщение''', а не количество сообщений). Исключением являются специальные ситуации, для которых хорошо нужно представлять последствия отношения ''один ко многим''. | * Проектируйте маршрутизацию сообщений между процессами так, чтобы соответствие было ''один к одному'' (имеются в виду узлы '''Отправить сообщение''' и '''Принять сообщение''', а не количество сообщений). Исключением являются специальные ситуации, для которых хорошо нужно представлять последствия отношения ''один ко многим''. | ||
[[Категория:Для разработчика]] |
Текущая версия на 09:13, 21 апреля 2023
Устранение типичных проблем
Версия 4.6.0
© 2015-2023, ООО "Процессные технологии"
# Настройка
# Общее
# Jboss7 deployment timeout
Иногда установленного по умолчанию таймаута в 60 секунд недостаточно для старта приложения runawfe.ear, вследствии этого будет сообщение и остановка приложения
JBAS015052: Did not receive a response to the deployment operation within the allowed timeout period [60 seconds]. Check the server configuration file and the server logs to find more about the status of the deployment.
Для того чтобы исправить необходимо в standalone.xml добавить атрибут deployment-timeout, значение которого задаётся в секундах
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0"> <deployment-scanner scan-interval="5000" relative-to="jboss.server.base.dir" path="deployments" deployment-timeout="300" /> </subsystem>
В качестве примера можно посмотреть Файл:Standalone.xml.
Также если в результате неудачного запуска сформировался файл runawfe.ear.failed (в deployments рядом с runawfe.ear) - то его нужно удалить.
# URI encoding
# Jboss7
Приложение требует (при использовании русскоязычных названий в процессах) чтобы кодировка запросов была установлена в UTF-8.
Для того чтобы установить её необходимо в standalone.xml добавить строки
<system-properties> <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/> </system-properties>
после закрытия элемента extensions. В качестве примера можно посмотреть Файл:Standalone.xml.
# Jboss4
Приложение требует (при использовании русскоязычных названий в процессах) чтобы кодировка запросов была установлена в UTF-8.
Для того чтобы установить её необходимо в ${jboss4}/server/default/deploy/jboss-web.deployer/server.xml добавить атрибут URIEncoding
<Connector port="8080" ... URIEncoding="UTF-8" />
# JMS
# Переименование очереди JMS 4.0.6+
# Jboss7
В коде приложения была переименована очередь JMS, но в конфигурации jboss7 изменений не было. Это не приводит к каким-либо ошибкам, кроме того что не работают узлы-сообщения (Отправить сообщение, Получить сообщение).
Для исправления ситуации необходимо в standalone.xml изменить
<jms-queue name="jbpmQueue"> <entry name="queue/jbpmQueue"/> <entry name="java:jboss/exported/queue/jbpmQueue"/> </jms-queue>
на
<jms-queue name="bpmMessages"> <entry name="queue/bpmMessages"/> <entry name="java:jboss/exported/queue/bpmMessages"/> </jms-queue>
В качестве примера можно посмотреть Файл:Standalone.xml.
# Jboss4
Описатель очереди runawfe-jms-service.xml включён в runawfe.ear, поэтому дополнительных действий не требуется.
# Сокрытие ошибки в логе в случае если приёмник сообщения ещё не готов его обработать
При взаимодействии между узлами-сообщениями бывают корректные ситуации когда сообщение уже отправлено из узла Отправить сообщение, но управление ещё не пришло в узел Принять сообщение для данного сообщения. В этом случае для корректной работы в целом осуществляется откат транзакции при получении сообщения. Это вызывает логирование ошибок 1 раз в минуту, захламляющих лог. Нужно настроить log4j так, чтобы эти ошибки не писались в лог.
# Jboss7
В настройках логирования в standalone.xml поместите строки:
<logger category="org.hornetq.ra.inflow.HornetQMessageHandler"> <level name="FATAL"/> </logger> <logger category="org.jboss.ejb3.invocation"> <level name="FATAL"/> </logger>
# Jboss4
В ${RUNAWFE}/server/default/conf/jboss-log4j.xml определите категорию
<category name="org.jboss.resource.adapter.jms.inflow.JmsServerSession"> <priority value="FATAL"/> </category>
# Аутентификация
# javax.security.auth.login.LoginException: KrbException: KDC has no support for encryption type (14) - KDC has no support for encryption type
Внести в следующий ключ реестра параметр
- Для Windows Server 2003 и Windows 2000 SP4
ключ: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
параметр: allowtgtsessionkey=dword:0x01
- Для Windows XP SP2
ключ: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos
параметр: allowtgtsessionkey=dword:0x01
После внесения параметра необходима перезагрузка.
# Веб-сервисы
# Вызов веб-сервиса из обработчика с помощью JAX-WS на JBoss 7.1.1
Caused by: java.lang.NoClassDefFoundError: org/springframework/beans/BeansException at org.jboss.wsf.stack.cxf.client.configuration.JBossWSBusFactory.getSpringBusFactory(JBossWSBus Factory.java:120)
JBoss 7.1.1 поставляется с JBossWS-cxf-4.0.2.GA, в котором есть ошибка. Необходимо обновить модель JBoss-cxf до версии 4.1.1.Final.
- Скачайте дистрибутив JBossWS-CXF-4.1.1.Final
- Переименуйте ant.properties.examples в ant.properties
- Измените ant.properties в соответствии с расположением jboss
- Выполните команду ant deploy-jboss711
# Ошибка вызова веб-сервиса на JBoss 7.1.1
В случае невозможности вызова веб-сервиса из внешнего приложения (например Среды разработки), проверьте следующее:
- откройте страницу с WSDL любого сервиса (например http://172.22.200.11:18080/wfe-service-4.0.5/AuthenticationWebService/AuthenticationAPI?wsdl)
- внизу найдите блок <soap:address location="http://172.22.200.11:18080/wfe-service-4.0.5/AuthenticationWebService/AuthenticationAPI"/>
- он должен указывать на корректный адрес сервера, именно он используется при вызове операций
Его можно изменить, указав опцию при запуске сервера, например -b 172.22.200.11
# Developer Studio
# Настройки JVM
В случае если настройки по умолчанию не подходят, например в случаях медленной работы Среды разработки из-за нехватки памяти, возникновение ошибки OutOfMemoryError, можно изменить настройки JVM. Для этого нужно рядом с runa-gpd.exe создать файл runa-gpd.ini с примерным содержанием
Для 32-битной версии
Из-за общего ограничения выделяемой памяти процессу операционной системой (порядка 1.5 Гб) следует распределить память между 3-мя областями: Heap, Permanent, Native. Если вылезает ошибка SWTError: No more handles - значит недостаточно области Native (управляется опосредованно: используется максимум, выделяемый ОС - Heap - Permanent). Если вылезает OutOfMemoryError: Java heap space - то недостаточно области Heap (управляется параметрами -Xms, -Xmx). Если вылезает OutOfMemoryError: PermGen space - то недостаточно области Permanent (управляется параметрами -XX:PermSize, -XX:MaxPermSize).
-vmargs -Xms256m -Xmx256m -XX:PermSize=256m -XX:MaxPermSize=256m
Для 64-битной версии
Можно выделить больше Heap памяти:
-vmargs -Xms1G -Xmx1G -XX:PermSize=256m -XX:MaxPermSize=256m
# Проблема с зависанием приложения в Linux
Иногда могут быть последствия бага https://bugs.eclipse.org/bugs/show_bug.cgi?id=215234, которые исправляются добавлением при запуске опции
-Dorg.eclipse.swt.internal.gtk.disablePrinting
# Работа с формами
# Отображение содержимого форм в неправильной кодировке
При переносе процессов между компьютерами могут возникнуть проблемы с отображением форм в неправильной кодировке. В этом случае выполните следующие рекомендации по устранению проблемы:
- вызовите контекстное меню на процессе, в котором возникла проблема с формами;
- выберите пункт "Обновить";
После этих действий, содержимое всех форм данного процесса будет отображаться в правильной кодировке.
# Проблема с формами в IE10
Если у вас установлен IE версии 10, то обнаружено что для корректной работы в настройках браузера localhost нужно добавить в доверенные узлы.
# Проблема с формами в IE11
Если у вас установлен IE версии 11, то в настройках среды разработки необходимо переключиться на использование CKeditor 4.
В меню: Свойства -> Настройки -> Редактор форм
# Использование встроенного браузера Mozilla в Windows 4.1.2+
Для встраивания вместо браузера IE в редактор форм Mozilla нужно скачать совместимую версию xulrunner и добавить дополнительный опции при запуске.
- Разархивируйте XULRunner (32-битная версия) или XULRunner (64-битная версия) (в зависимости от используемой JDK) в любое место (например c:/xulrunner-x.x.x.x).
- В файле runa-gpd.ini допишите опции (перед опциями java в этом файле должен стоять -vmargs)
-Dorg.eclipse.swt.browser.DefaultType=mozilla -Dorg.eclipse.swt.browser.XULRunnerPath=C:/xulrunner-x.x.x.x
# Проблема с формами в Linux
В некоторых версиях ОС возникает проблема, проявляющаяся в аварийном завершении приложения.
Связана с багами https://bugs.eclipse.org/bugs/show_bug.cgi?id=405786, https://bugs.eclipse.org/bugs/show_bug.cgi?id=404776.
В качестве обходного пути нужно использовать Mozilla:
- В файле runa-gpd.ini допишите опции (перед опциями java в этом файле должен стоять -vmargs)
-Dorg.eclipse.swt.browser.DefaultType=mozilla -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/bin/xulrunner
При этом таблица совместимости xulrunner (http://www.eclipse.org/swt/faq.php#browserlinux eclipse3.7) иногда не позволяет полноценно запустить браузер в приложении, но избавляет от проблемы падения редактора, обеспечивая возможность использования текстового редактора.
# Открытие Doc-файла в DS с помощью LIbre
DS пытается использовать для загрузки файла тот редактор, который использует система по умолчанию. Если это не Word, а например Libre
Если в этом случае включена настройки MS WORD - "Сообщать о том, что MS WORD не является программой по умолчанию", Libre загрузить не может.
# Разработка процессов
# Правила хорошего тона
Следование нижеприведённым советам избавит вас от многих проблем.
- Для ботов определяйте проверку переменных (в случае ошибки процесс остановится в месте возникновения проблемы, а не позже)
- Определяйте все переменные в среде разработки, которые используете
- Проектируйте маршрутизацию сообщений между процессами так, чтобы соответствие было один к одному (имеются в виду узлы Отправить сообщение и Принять сообщение, а не количество сообщений). Исключением являются специальные ситуации, для которых хорошо нужно представлять последствия отношения один ко многим.