Добавить внешний модуль jgroups в Wildfly (native-s3-ping)

#java #jar #jboss #wildfly #jgroups

#java #jar #jboss #wildfly #jgroups

Вопрос:

Я настроил кластер wildfly с образцом веб-приложения (ClusterBench), используя протокол S3_PING, который работает нормально. Однако сейчас я пытаюсь настроить NATIVE_S3_PING, который в конечном итоге должен заменить S3_PING (и позволяет использовать роли AWS IAM для управления доступом).

Я довольно новичок в Wildfly, и я не могу найти никакой хорошей документации, объясняющей, как я могу импортировать этот модуль.

Я загрузил необходимые банки и поместил их в:

 /modules/system/layers/base/org/jgroups/aws/main
 

и создал module.xml содержащий:

 <?xml version="1.0" encoding="UTF-8"?>
<module name="org.jgroups.aws.s3" xmlns="urn:jboss:module:1.7">

<resources>
    <resource-root path="native-s3-ping-1.0.0.Final.jar"/>
</resources>

<dependencies>
    <module name="javax.api"/>
    <module name="org.jgroups"/>
</dependencies>
 

Однако, когда я пытаюсь запустить сервер, я получаю несколько ошибок, таких как:

 2020-11-25 03:29:15,947 WARN  [org.jboss.modules.define] (ServerService Thread Pool -- 3) Failed to define class org.jgroups.logging.CustomLogFactory in Module "org.jgroups" version 4.2.4.Final from local module loader @490ab905 (finder: local module finder @56ac3a89 (roots: /home/oracle/wildfly/modules,/home/oracle/wildfly/modules/system/layers/base)): org.jboss.modules.ModuleLoadError: org.jgroups.aws.s3
 

Это приводит к тому, что Jgroups не может проанализировать конфигурацию и не запускается, что означает, что сервер не запускается.

Каков правильный процесс для интеграции этого (и любых других) внешних модулей Jgroups в Wildfly?

РЕДАКТИРОВАТЬ: нашел здесь некоторую документацию, в которой указан способ добавления пользовательских модулей. Пробовал это:

 module add --name=org.jgroups.aws.s3 --resource-delimiter=, --resources=native-s3-ping-0.9.6.Final.jar,joda-time-2.8.1.jar,jmespath-java-1.11.368.jar,jgroups-4.1.8.Final.jar,jackson-dataformat-cbor-2.6.7.jar,jackson-databind-2.6.7.1.jar,jackson-core-2.6.7.jar,jackson-annotations-2.6.0.jar,ion-java-1.0.2.jar,httpcore-4.4.9.jar,httpclient-4.5.5.jar,commons-logging-1.1.3.jar,commons-codec-1.10.jar,aws-java-sdk-s3-1.11.368.jar,aws-java-sdk-kms-1.11.368.jar,aws-java-sdk-core-1.11.368.jar --dependencies=javax.api,org.jgroups
 

Тем не менее, по-прежнему возникает эта ошибка:

 2020-11-25 05:15:58,773 WARN  [org.jboss.modules.define] (ServerService Thread Pool -- 3) Failed to define class org.jgroups.logging.CustomLogFactory in Module "org.jgroups" version 4.2.5.Final from local module loader @490ab905 (finder: local module finder @56ac3a89 (roots: /home/oracle/wildfly/modules,/home/oracle/wildfly/modules/system/layers/base)): org.jboss.modules.ModuleLoadError: Error loading module from /home/oracle/wildfly/modules/org/jgroups/aws/s3/main/module.xm
 

Я подтвердил, что класс, на который он жалуется, действительно доступен…

Ответ №1:

Понял это.

  1. Используя API, добавьте модуль. Убедитесь, что jgroups jar НЕ включен, так как он будет конфликтовать.
      module add --name=org.jgroups.aws.s3 --resource-delimiter=, --resources=httpclient-4.5.9.jar,native-s3-ping-1.0.0.Final.jar,joda-time-2.8.1.jar,jmespath-java-1.11.708.jar,jackson-dataformat-cbor-2.6.7.jar,jackson-databind-2.6.7.3.jar,jackson-core-2.6.7.jar,jackson-annotations-2.6.0.jar,ion-java-1.0.2.jar,httpcore-4.4.11.jar,commons-logging-1.1.3.jar,commons-codec-1.11.jar,aws-java-sdk-s3-1.11.708.jar,aws-java-sdk-kms-1.11.708.jar,aws-java-sdk-core-1.11.708.jar --dependencies=javax.api,org.jgroups
     
  2. В Wildfly standalone-config.xml , убедитесь, что тип протокола определен правильно. Например, в этом случае, чтобы он мог найти пользовательский протокол.
       <stack name="s3ping">
                     <transport type="TCP" socket-binding="jgroups-tcp"/>
                     <protocol type="org.jgroups.aws.s3.NATIVE_S3_PING" module="org.jgroups.aws.s3"> </stack>