将 kjar 部署到 jBPM/KieServer 时出错
Errors when deploying kjar to jBPM/KieServer
我一直在评估 jBPM workbench 和 KieServer 以自动构建和部署规则,但我一直坚持我做错了什么。我的目标是在最少的人工干预下构建 jar 并将其部署到 KieServer,我已经完成了以下工作:
从 https://hub.docker.com/r/jboss/jbpm-server-full 启动了一个 Docker 容器。我能够在 Workbench 中创建和部署项目 - 但我们的工作流程还将包含在 Workbench 之外构建的规则。如果一切看起来有用,我将只部署 Kie 服务器,但我只是在评估阶段。
创建了一个简单的规则项目,具有单个数据对象和规则(使用 Workbench 从成功部署中直接复制,并修改了包名称以防止可能的冲突)和我的 settings.xml 使用正确的凭据和以下 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>rules</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>kjar</packaging>
<properties>
<kie.version>7.50.0.Final</kie.version>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<distributionManagement>
<repository>
<id>guvnor-m2-repo</id>
<name>JBPM Workbench Repo</name>
<url>http://localhost:8080/business-central/maven2/</url>
</repository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-model-compiler</artifactId>
<version>${kie.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${kie.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>${kie.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
使用 mvn clean package deploy
构建项目 -
该项目的构建没有错误,并且显然已成功被服务接受。我可以在 Docker 实例中看到 jar,在 /opt/jboss/wildfly/bin/repositories/kie/global/com/example/rules/1.0.0-SNAPSHOT
下
尝试使用 http://localhost:8080/kie-server/services/rest/server/containers/test
PUT API(使用正确的凭据)创建容器,但出现以下错误
{
"type": "FAILURE",
"msg": "Failed to create container test with module com.example:rules:1.0.0-SNAPSHOT: java.lang.RuntimeException: Cannot find KieModule: com.example:rules:1.0.0-SNAPSHOT",
"result": null
}
- 试图在 Workbench 中创建部署单元。我可以在列表中看到该包并且可以 select 它,但是我第一次这样做时,我收到以下错误(它在单行文本框中几乎不可见 - 为了清楚起见,我已经对其进行了格式化。这是一个selection的几行出来大约600)
{"ToSubject":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC","CommandType":"getProcessConfig:java.lang.String:","Qualifiers":{"^EncodedType":"java.util.ArrayList","^ObjectID":"1","^Value":[]},"ReplyTo":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC.getProcessConfig:java.lang.String::41:RespondTo:RPC","ErrorTo":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC.getProcessConfig:java.lang.String::41:Errors:RPC","AdditionalDetails":"<tt>
org.jboss.errai.bus.client.api.base.MessageDeliveryFailure: error invoking RPC endpoint public abstract org.kie.workbench.common.screens.server.management.model.ProcessConfigModule org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService.getProcessConfig(java.lang.String) throws java.io.IOException
at deployment.business-central.war/org.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:75)
at deployment.business-central.war/org.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:40)
at deployment.business-central.war/org.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54)
at deployment.business-central.war/org.jboss.errai.cdi.server.CDIExtensionPoints.callback(CDIExtensionPoints.java:448)
at deployment.business-central.war/org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
at deployment.business-central.war/org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:297)
...
Caused by: java.lang.NullPointerException: <No Message>
at deployment.business-central.war/org.apache.commons.io.IOUtils.toInputStream(IOUtils.java:1647)
at deployment.business-central.war/org.kie.workbench.common.screens.server.management.backend.service.DeploymentDescriptorServiceCDI.getProcessConfig(DeploymentDescriptorServiceCDI.java:56)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.weld.core@3.1.3.Final/org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
at org.jboss.weld.core@3.1.3.Final/org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106)
at deployment.business-central.war/org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService90586371$Proxy$_$$_WeldClientProxy.getProcessConfig(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
在 selecting 并尝试随后完成部署时,我不再收到上述错误,但这次在日志中收到消息 GAV 'com.example:rules:1.0.0-SNAPSHOT' not found in the Maven repository. Are you sure you want to deploy it?
和以下堆栈跟踪
17:54:30,873 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:pom:1.0.0-SNAPSHOT
17:54:31,177 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:1.0.0-SNAPSHOT
17:54:31,358 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:pom:1.0.0-SNAPSHOT
17:54:31,360 ERROR [org.kie.server.services.impl.KieServerImpl] (default task-16) Error creating container 'baz' for module 'com.example:rules:1.0.0-SNAPSHOT': java.lang.RuntimeException: Cannot find KieModule: com.example:rules:1.0.0-SNAPSHOT
at deployment.kie-server.war//org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:190)
at deployment.kie-server.war//org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:180)
at deployment.kie-server.war//org.kie.server.services.impl.KieServerImpl.createInternalKieContainer(KieServerImpl.java:373)
at deployment.kie-server.war//org.kie.server.services.impl.KieServerImpl.createContainer(KieServerImpl.java:286)
at deployment.kie-server.war//org.kie.server.remote.rest.common.resource.KieServerRestImpl.createContainer(KieServerRestImpl.java:155)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
看起来我已经正确地执行了所有步骤(据我所知)- jar 已构建,已部署到 /opt/jboss/wildfly/bin/repositories/kie/global/
目录,在 Workbench 中可见。但它不能作为容器部署在 KieServer 中。有人对我做错了什么有任何提示吗?
我在我的项目中发现了一个错误。我不小心将 maven/pom.properties 从另一个项目复制到我的 META-INF 目录中,该目录具有与我正在构建的 jar 不同的 groupId 和 artifactId。这导致服务器将 jar 部署到错误的 /opt/jboss/.m2/repository 位置,因此得到 GAV 'com.example:rules:1.0.0-SNAPSHOT' not found in the Maven repository. Are you sure you want to deploy it?
我一直在评估 jBPM workbench 和 KieServer 以自动构建和部署规则,但我一直坚持我做错了什么。我的目标是在最少的人工干预下构建 jar 并将其部署到 KieServer,我已经完成了以下工作:
从 https://hub.docker.com/r/jboss/jbpm-server-full 启动了一个 Docker 容器。我能够在 Workbench 中创建和部署项目 - 但我们的工作流程还将包含在 Workbench 之外构建的规则。如果一切看起来有用,我将只部署 Kie 服务器,但我只是在评估阶段。
创建了一个简单的规则项目,具有单个数据对象和规则(使用 Workbench 从成功部署中直接复制,并修改了包名称以防止可能的冲突)和我的 settings.xml 使用正确的凭据和以下 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>rules</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>kjar</packaging>
<properties>
<kie.version>7.50.0.Final</kie.version>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<distributionManagement>
<repository>
<id>guvnor-m2-repo</id>
<name>JBPM Workbench Repo</name>
<url>http://localhost:8080/business-central/maven2/</url>
</repository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-model-compiler</artifactId>
<version>${kie.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${kie.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>${kie.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
使用
下mvn clean package deploy
构建项目 - 该项目的构建没有错误,并且显然已成功被服务接受。我可以在 Docker 实例中看到 jar,在/opt/jboss/wildfly/bin/repositories/kie/global/com/example/rules/1.0.0-SNAPSHOT
尝试使用
http://localhost:8080/kie-server/services/rest/server/containers/test
PUT API(使用正确的凭据)创建容器,但出现以下错误
{
"type": "FAILURE",
"msg": "Failed to create container test with module com.example:rules:1.0.0-SNAPSHOT: java.lang.RuntimeException: Cannot find KieModule: com.example:rules:1.0.0-SNAPSHOT",
"result": null
}
- 试图在 Workbench 中创建部署单元。我可以在列表中看到该包并且可以 select 它,但是我第一次这样做时,我收到以下错误(它在单行文本框中几乎不可见 - 为了清楚起见,我已经对其进行了格式化。这是一个selection的几行出来大约600)
{"ToSubject":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC","CommandType":"getProcessConfig:java.lang.String:","Qualifiers":{"^EncodedType":"java.util.ArrayList","^ObjectID":"1","^Value":[]},"ReplyTo":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC.getProcessConfig:java.lang.String::41:RespondTo:RPC","ErrorTo":"org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService:RPC.getProcessConfig:java.lang.String::41:Errors:RPC","AdditionalDetails":"<tt>
org.jboss.errai.bus.client.api.base.MessageDeliveryFailure: error invoking RPC endpoint public abstract org.kie.workbench.common.screens.server.management.model.ProcessConfigModule org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService.getProcessConfig(java.lang.String) throws java.io.IOException
at deployment.business-central.war/org.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:75)
at deployment.business-central.war/org.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:40)
at deployment.business-central.war/org.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54)
at deployment.business-central.war/org.jboss.errai.cdi.server.CDIExtensionPoints.callback(CDIExtensionPoints.java:448)
at deployment.business-central.war/org.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
at deployment.business-central.war/org.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:297)
...
Caused by: java.lang.NullPointerException: <No Message>
at deployment.business-central.war/org.apache.commons.io.IOUtils.toInputStream(IOUtils.java:1647)
at deployment.business-central.war/org.kie.workbench.common.screens.server.management.backend.service.DeploymentDescriptorServiceCDI.getProcessConfig(DeploymentDescriptorServiceCDI.java:56)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.weld.core@3.1.3.Final/org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
at org.jboss.weld.core@3.1.3.Final/org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:106)
at deployment.business-central.war/org.kie.workbench.common.screens.server.management.service.DeploymentDescriptorService90586371$Proxy$_$$_WeldClientProxy.getProcessConfig(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
在 selecting 并尝试随后完成部署时,我不再收到上述错误,但这次在日志中收到消息 GAV 'com.example:rules:1.0.0-SNAPSHOT' not found in the Maven repository. Are you sure you want to deploy it?
和以下堆栈跟踪
17:54:30,873 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:pom:1.0.0-SNAPSHOT
17:54:31,177 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:1.0.0-SNAPSHOT
17:54:31,358 WARN [org.appformer.maven.integration.MavenRepository] (default task-16) Unable to resolve artifact: com.example:rules:pom:1.0.0-SNAPSHOT
17:54:31,360 ERROR [org.kie.server.services.impl.KieServerImpl] (default task-16) Error creating container 'baz' for module 'com.example:rules:1.0.0-SNAPSHOT': java.lang.RuntimeException: Cannot find KieModule: com.example:rules:1.0.0-SNAPSHOT
at deployment.kie-server.war//org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:190)
at deployment.kie-server.war//org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:180)
at deployment.kie-server.war//org.kie.server.services.impl.KieServerImpl.createInternalKieContainer(KieServerImpl.java:373)
at deployment.kie-server.war//org.kie.server.services.impl.KieServerImpl.createContainer(KieServerImpl.java:286)
at deployment.kie-server.war//org.kie.server.remote.rest.common.resource.KieServerRestImpl.createContainer(KieServerRestImpl.java:155)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
看起来我已经正确地执行了所有步骤(据我所知)- jar 已构建,已部署到 /opt/jboss/wildfly/bin/repositories/kie/global/
目录,在 Workbench 中可见。但它不能作为容器部署在 KieServer 中。有人对我做错了什么有任何提示吗?
我在我的项目中发现了一个错误。我不小心将 maven/pom.properties 从另一个项目复制到我的 META-INF 目录中,该目录具有与我正在构建的 jar 不同的 groupId 和 artifactId。这导致服务器将 jar 部署到错误的 /opt/jboss/.m2/repository 位置,因此得到 GAV 'com.example:rules:1.0.0-SNAPSHOT' not found in the Maven repository. Are you sure you want to deploy it?