Troubleshooting: различия между версиями

Материал из RunaWFE
Перейти к навигации Перейти к поиску
м
 
Строка 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.

Официальная инструкция

# Ошибка вызова веб-сервиса на JBoss 7.1.1

В случае невозможности вызова веб-сервиса из внешнего приложения (например Среды разработки), проверьте следующее:

Его можно изменить, указав опцию при запуске сервера, например -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 и добавить дополнительный опции при запуске.

-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 загрузить не может.

# Разработка процессов

# Правила хорошего тона

Следование нижеприведённым советам избавит вас от многих проблем.

  • Для ботов определяйте проверку переменных (в случае ошибки процесс остановится в месте возникновения проблемы, а не позже)
  • Определяйте все переменные в среде разработки, которые используете
  • Проектируйте маршрутизацию сообщений между процессами так, чтобы соответствие было один к одному (имеются в виду узлы Отправить сообщение и Принять сообщение, а не количество сообщений). Исключением являются специальные ситуации, для которых хорошо нужно представлять последствия отношения один ко многим.