Сервер Kie: как развернуть контейнер kjar с зависимостями

#java #maven #jboss #drools #kie

Вопрос:

Я пытаюсь создать образ сервера kie с предварительно развернутым процессом, используя docker.

Вот файл Dockerfile для создания образа с помощью kjar

 FROM jboss/jbpm-server-full:7.18.0.Final

ENV KIE_SERVER_STARTUP_STRATEGY=LocalContainersStartupStrategy

# set locale
ENV LC_ALL=en_US.UTF-8

USER jboss
RUN mkdir -p "${HOME}/.m2/repository/bpm/bpm/0.1.0"
COPY --chown=jboss:jboss mvn.settings.xml /opt/jboss/.m2/settings.xml
COPY --chown=jboss:jboss target/pensionpayment.jar /opt/jboss/.m2/repository/bpm/bpm/0.1.0/bpm-0.1.0.jar
COPY --chown=jboss:jboss pom.xml /opt/jboss/.m2/repository/bpm/bpm/0.1.0/bpm-0.1.0.pom
 

Затем я запускаю изображение docker run -p 28080:8080 -p 28001:8001 -d --name kieserver kie:bpm

и попробуйте развернуть контейнер с помощью REST API..

 curl -u "wbadmin:wbadmin" -X PUT -H "Content-Type: application/xml" -d '@payload.xml' "http://localhost:28080/kie-server/services/rest/server/containers/bpm"
 

..со следующей полезной нагрузкой

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kie-container>
    <config-items>
        <itemName>RuntimeStrategy</itemName>
        <itemValue>SINGLETON</itemValue>
        <itemType>java.lang.String</itemType>
    </config-items>
    <config-items>
        <itemName>MergeMode</itemName>
        <itemValue>MERGE_COLLECTIONS</itemValue>
        <itemType>java.lang.String</itemType>
    </config-items>
    <config-items>
        <itemName>KBase</itemName>
        <itemValue></itemValue>
        <itemType>java.lang.String</itemType>
    </config-items>
    <config-items>
        <itemName>KSession</itemName>
        <itemValue></itemValue>
        <itemType>java.lang.String</itemType>
    </config-items>
    <!-- This is where you define your kjar as an artifactid so that
         the kie-server can find and deploy it. -->
    <release-id>
        <artifact-id>bpm</artifact-id>
        <group-id>bpm</group-id>
        <version>0.1.0</version>
    </release-id>
    <scanner poll-interval="5000" status="STARTED"/>
</kie-container>
 

Но я получаю java.lang.NoClassDefFoundError ошибку из-за отсутствия зависимостей. Будучи новичком в JBPM и сервере kie, я не уверен, должен ли сервер разрешать зависимости maven модуля во время развертывания или мне следует вместо этого создавать и развертывать fat jar. Кроме того, есть ли какой-либо другой способ развертывания, кроме API REST? Развертывание бизнес-центра также должно быть возможно для целей разработки. Каков правильный способ реализации этого?

Комментарии:

1. Если вы не создали Maven fatjar (с включенными зависимостями), вам необходимо вручную связать зависимости самостоятельно при запуске Jar. Это ничем не отличается от запуска Maven fatjar против Maven jar вручную из командной строки.