首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >helloworld on Kie Workbench和Kie Server version 6.3.0

helloworld on Kie Workbench和Kie Server version 6.3.0
EN

Stack Overflow用户
提问于 2015-12-10 05:36:56
回答 1查看 2.9K关注 0票数 1

我可以在Wildflig8.1.0上设置KIE执行服务器(6.3.0.Final)和Workbench (6.3.0.Final)。最后使用博客中的信息:http://mswiderski.blogspot.in/2015/10/installing-kie-server-and-workbench-on.html服务器和工作台都运行良好,服务器在Workbench中的“服务器管理浏览器”选项卡下可见。

我的下一步是在服务器上部署一个简单的容器,并测试REST、GET和POST调用,因此我遵循了前面提到的步骤:HelloWorld using Drools Workbench & KIE Server

Java和DRL代码中唯一的更改是有关包的。下面是我的Java代码:

代码语言:javascript
复制
package test.myproject;

/**
 * This class was automatically generated by the data modeler tool.
 */

public class HelloWorld implements java.io.Serializable
{

   static final long serialVersionUID = 1L;

   private java.lang.String message;

   public HelloWorld()
   {
   }

   public java.lang.String getMessage()
   {
      return this.message;
   }

   public void setMessage(java.lang.String message)
   {
      this.message = message;
   }

   public HelloWorld(java.lang.String message)
   {
      this.message = message;
   }

}

DRL文件代码:

代码语言:javascript
复制
package test.myproject;

import test.myproject.HelloWorld;

rule "hello"

when 
    HelloWorld(message == "Joe");
then
    System.out.println("Hello Joe!");
end

代码是成功构建的,并作为容器部署在服务器上。使用RESTClient/PostMan/Advanced客户端的GET查询提供了适当的响应。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response type="SUCCESS" msg="Info for container myproject">
    <kie-container container-id="myproject" status="STARTED">
        <release-id>
            <artifact-id>MyProject</artifact-id>
            <group-id>test</group-id>
            <version>1.0</version>
        </release-id>
        <resolved-release-id>
            <artifact-id>MyProject</artifact-id>
            <group-id>test</group-id>
            <version>1.0</version>
        </resolved-release-id>
        <scanner status="DISPOSED"/>
    </kie-container>
</response>

但是,当我发布到具有以下内容的容器时:

代码语言:javascript
复制
<batch-execution lookup="defaultKieSession">
<insert out-identifier="message" return-object="true" entrypoint="DEFAULT">
    <test.myproject.HelloWorld>
        <message>Joe</message>
    </test.myproject.HelloWorld>
</insert>

请注意,我确实根据代码的更改对XML进行了更改。我确实尝试了不同的选择,如etc,但我得到的反应是:

代码语言:javascript
复制
Status Code: 405 Method Not Allowed
Allow: HEAD, DELETE, GET, OPTIONS, PUT
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 0
Date: Thu, 10 Dec 2015 05:29:09 GMT
Expires: 0
Pragma: no-cache
Server: WildFly/8
X-Powered-By: Undertow/1

看起来不允许POST选项,因此尝试了PUT,但得到了如下响应:

代码语言:javascript
复制
Status Code: 415 Unsupported Media Type
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 0
Date: Thu, 10 Dec 2015 05:32:17 GMT
Expires: 0
Pragma: no-cache
Server: WildFly/8
X-Powered-By: Undertow/1

有人能告诉我我哪里出错了吗。我还检查了日志文件,并在调用POST时看到下面的错误:

2015-10 10:59:59:208警告org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:375) org.jboss.resteasy.core.ExceptionHandler失败执行: javax.ws.rs.NotAllowedException:没有找到用于POST的资源方法,返回405和允许头部在org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114) resteasy-jaxrs-3.0.8.Final.jar: at org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114) resteasy-jaxrs-3.0.8.Final.jar:

并在调用PUT时出错:

2015-12-10 11:02:17,127警告org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:380) org.jboss.resteasy.core.ExceptionHandler执行失败: javax.ws.rs.NotSupportedException:不能在org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114) resteasy 3.0.8.Final.jar中使用内容类型:org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114) resteasy-jaxrs-3.0.8.Final.jar:

EN

回答 1

Stack Overflow用户

发布于 2015-12-11 05:39:14

现在起作用了。所需的修改如下:

在发布期间调用的网址是:http://localhost:8080/kie-server/services/rest/server/containers/instances/myproject

从6.3.0开始,需要使用实例(注意:)

6.3.0中的KIE Server支持JAXB、JSON和Xstream。因为默认是JAXB,所以您需要提供JAXB有效的内容。或者,您可以设置HTTP头以通知KIE Server使用Xstream作为封送器:标头名称:X ContentType报头值XSTREAM

因此,设置适当的报头

最后,XML的形式应该是:

代码语言:javascript
复制
<batch-execution lookup="defaultKieSession">
  <insert out-identifier="test">
    <test.myproject.HelloWorld>
      <message>"Joe"</message>
    </test.myproject.HelloWorld>
  </insert>
  <fire-all-rules/>
  <get-objects out-identifier="test"/>
</batch-execution>

小心输出“你好,乔!”在命令提示符下。

感谢Maciej Swiderski的所有支持

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34194475

复制
相关文章

相似问题

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