Класс Java не загружается из службы javaclassloader в IIB

У меня есть сборка приложения в IIB v10, где я ссылаюсь на подпрограмму Java из esql. Я создал класс Java как независимый ресурс, затем экспортировал его как файл JAR и поместил в папку под C://lib. Существовала служба конфигурации для загрузчика классов Java, которая также выбирает еще один файл jar из C://lib. Затем я изменил существующую службу конфигурации для загрузчика классов Java, указав новое имя jar и его путь. Кроме того, был перезапущен брокер и проверен с помощью команды mqsireportbroker и веб-консоли, чтобы подтвердить, что новый jar-файл был обновлен в службе конфигурации. Теперь, когда я развертываю файл BAR на сервере, я получаю следующую ошибку.

BIP3202E: (com.xxxx.soa.xx.xxx.createMD5Hash, 1.12) : An error occurred when trying to resolve the Java class or method 'com.xxxx.gen.createMD5.createMD5Hash' which is referred to by the routine 'createMD5Hash'. 

Далее генерируются сообщения, которые объясняют ошибку более подробно.

Correct the syntax of your Java expression in node 'com.xxxx.soa.xx.xxx.createMD5Hash', around line and column '1.12', then redeploy the message flow. 

BIP2943E: The Java Method 'com.xxxx.gen.createMD5.createMD5Hash' could not be found as its containing class could not be found in the deployed bar file or in the 'workpath/shared-classes/' directory. 

The specified Java Method 'com.xxxx.gen.createMD5.createMD5Hash' belongs to a class that could not be found in the deployed bar file or the 'workpath/shared-classes/' directory. Ensure that the fully qualified name of the method is correct and that its containing class or jar file is in the deployed bar file or in the 'workpath/shared-classes/' directory. 

Examine and correct the SQL program.

Когда я помещаю файл jar в каталог workpath/shared-classes, он работает. Но я хочу, чтобы файл jar брался из общей библиотеки классов, которая C://lib. Что я упускаю в этом случае?


person abhi88    schedule 19.08.2019    source источник
comment
Опыт показывает, что гораздо проще развернуть собственный JAR в виде внутренняя зависимость, которая будет развернута вместе с вашим потоком в файле BAR.   -  person Daniel Steinmann    schedule 20.08.2019


Ответы (3)


Все, что вам нужно сделать, это поместить вашу банку в папку общих классов. Вы можете легко найти всю информацию об этом в документации IBM, но вот пример для Unix:

/var/mqsi/config/MY_BROKER/shared-classes

Вы можете либо поместить туда файл .jar, и он будет загружен для каждой группы выполнения (также называемой серверами интеграции). Если вы знаете, что вам это нужно только для определенной группы выполнения, вы можете скопировать его туда:

/var/mqsi/config/MY_BROKER/MY_EG/shared-classes

И я настоятельно рекомендую вам использовать второй вариант, иначе у вас могут возникнуть проблемы с производительностью, если вы будете делать это с большим количеством библиотек.

person jdel    schedule 28.08.2019

Есть только несколько путей, откуда загружаются файлы .jar.

Для получения дополнительной информации см.: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/bk58210_.htm

Файлы JAR загружаются в следующем порядке приоритета:

  1. Файлы JAR, размещенные в каталоге общих классов сервера интеграции, разрешают доступ к ним только одному определенному серверу интеграции. Файлы, размещенные здесь, загружаются первыми.
  2. Файлы JAR, размещенные в каталоге общих классов брокера, разрешают доступ к ним только одному определенному брокеру. Файлы, размещенные здесь, загружаются после любых файлов, помещенных в каталог общих классов сервера интеграции.
  3. Файлы JAR, размещенные в каталоге общих классов верхнего уровня, доступны для всех брокеров и всех серверов интеграции. Файлы, размещенные здесь, загружаются после любых файлов, помещенных в каталог общих классов брокера.
person uniqk    schedule 05.03.2020

Я нашел его в окнах здесь C:\ProgramData\IBM\MQSI\config*\shared-classes

с помощью этой команды mqsireportbroker ‹my_broker_name›

person lars1595    schedule 29.07.2021