Упаковка ключей расширения для поставщиков в качестве EAR - PullRequest
0 голосов
/ 11 декабря 2019

Я нахожусь в проекте, который готов расширить функциональность Keycloak новыми. Для этого мы используем SPI, и у нас есть несколько jar-файлов для горячего развертывания на сервере Wildfly's keycloak. У нас есть серьезные проблемы с зависимостью между банками. Нам нужно упаковать все функции в EAR, но я не могу найти подходящую конфигурацию для этого. Мой пример был post- Keycloak - пользовательский SPI не отображается в списке , который объясняет, как упаковать JAR в EAR для развертывания на Jboss, и не ясно, куда мы должны поместить зависимости jar.

Подробная информация о структуре проекта mavem:

KeycloakProject (packaging pom)
|
+ - keycloak-entities-providers (packaging pom)
| |
| +- keycloak-first-entity-provider (packaging jar)
| |          |
| |          +- META-INF
| |             |
| |             +- services
| |                |
| |                +- org.keycloak.authentication.AuthenticatorFactory
| |                +- org.keycloak.connections.jpa.entityprovider.JpaEntityProviderFactory
| |                |  ...
| |                +- jboss-deployment-structure.xml
| +- keycloak-second-entity-provider (packagind jar)
|            |
|            +- META-INF
|               |
|               +- services
|               |  |
|               |  +- org.keycloak.services.resource.RealmResourceProviderFactory
|               |   ...
|               +- jboss-deployment-structure.xml
+- keycloak-identity-providers (packaging pom)
  |
  +- keycloak-first-identity-provider (packaging jar)
  |          |
  |          +- META-INF
  |             |
  |             +- services
  |                |
  |                +- org.keycloak.authentication.AuthenticatorFactory
  |                +- org.keycloak.connections.jpa.entityprovider.JpaEntityProviderFactory
  |                |  ...
  |                +- jboss-deployment-structure.xml
  +- keycloak-second-identity-provider (packagind jar)
             |
             +- META-INF
                |
                +- services
                |  |
                |  +- org.keycloak.services.resource.RealmResourceProviderFactory
                |   ...
                +- jboss-deployment-structure.xml

Мне нужно знать, есть ли в пакете EAR один файл jboss-deploy-structure.xml, и что в этом случаедолжен содержать. Каждый файл jar имеет свои собственные зависимости, и существует необходимость зависеть друг от друга (например, keycloak-second-entity-provider зависит от keycloak-first-entity-provider).

Спасибо!

1 Ответ

0 голосов
/ 12 декабря 2019

Да, вы должны создать только один дескриптор jboss-deployment-structure.xml для всего пакета EAR. Это должно быть определено в источниках артефактов EAR. services, persistence.xml и другие вещи должны оставаться с соответствующими банками. Поскольку у вас есть отдельный артефакт для каждого SPI, вам, вероятно, придется объявить каждый jar как отдельный <sub-deployment name=".."> в jboss-deployment-structure.xml. Затем вам также нужно будет сделать все вложенные развертывания доступными для других (документы Wildfly и Jboss теперь ваши друзья, вы также можете проверить реализацию сканера развертывания в источниках подсистемы Keycloak Wildfly).

Честно говоря, я не вижу реальной выгоды от разделения каждой реализации SPI на отдельные артефакты, поэтому вы не создаете свой собственный SPI. Я также прошел этот финал только с одним артефактом.

...