#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 вручную из командной строки.