首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过REST API以编程方式将KJAR部署到KIE执行服务器

通过REST API以编程方式将KJAR部署到KIE执行服务器
EN

Stack Overflow用户
提问于 2019-12-08 18:56:50
回答 1查看 661关注 0票数 0

我想知道是否可以通过编程方式(通过API)将KJAR部署到执行服务器?我可以使用以下代码构建一个KJAR:

代码语言:javascript
复制
        final KieServices kieServices = KieServices.Factory.get();
        final KieFileSystem kieFileSystem = kieServices.newKieFileSystem();

        kieFileSystem.write("src/main/resources/" + ClassUtils.convertClassNameToResourcePath(getPackageNameForRule(rule.getValue())) + "/" + rule
                                                        .getCode() + ".drl", rule.getValue());


        return kieServices.newKieBuilder(kieFileSystem).buildAll().getKieModule().getReleaseId();

我还可以通过REST KieServicesClient在KIE执行服务器中创建一个容器,如下所示:

代码语言:javascript
复制
        KieContainerResource kieContainerResource =
                        new KieContainerResource(containerId, new org.kie.server.api.model.ReleaseId(buildNewReleaseId()));
        kieServicesClient.createContainer(containerId, kieContainerResource);

但是当我这样做的时候,我在KIE服务器上得到了一个异常,说:

代码语言:javascript
复制
kie-server          | 10:54:04,192 ERROR [org.kie.server.services.impl.KieServerImpl] (default task-2) Error creating container 'targeting' for module 'org.default:artifact:1.0.0': java.lang.RuntimeException: Cannot find KieModule: org.default:artifact:1.0.0
kie-server          |   at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:186)
kie-server          |   at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:176)
kie-server          |   at org.kie.server.services.impl.KieServerImpl.createContainer(KieServerImpl.java:275)
kie-server          |   at org.kie.server.remote.rest.common.resource.KieServerRestImpl.createContainer(KieServerRestImpl.java:157)
kie-server          |   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
kie-server          |   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
kie-server          |   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
kie-server          |   at java.lang.reflect.Method.invoke(Method.java:498)
kie-server          |   at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
kie-server          |   at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:509)

我的KIE服务器在docker容器中运行。我必须以编程方式调用Maven才能在docker容器内的存储库中部署我的KJAR吗?我希望有一个API可以通过编程的方式来实现这一点。另外,Drools工作台如何做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2019-12-11 03:18:10

我找到了。在org.kie.soup:kie-soup-maven-integration中有一个可以像这样使用的API:

代码语言:javascript
复制
        MavenRepository repository = getMavenRepository();

        if (remote) {
            RemoteRepository remoteRepository = new RemoteRepository.Builder("id", "type", "url").build();
            repository.deployArtifact(remoteRepository, releaseId, kjar, pom);
        } else {
            repository.installArtifact(releaseId, kjar, pom);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59234684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档