我可以使用博客中提供的信息在Wildfly 8.1.0.Final上设置KIE Execution Server(6.3.0.Final)和Workbench(6.3.0.Final): http://mswiderski.blogspot.in/2015/10/installing-kie-server-and-workbench-on.html 服务器和Workbench都工作正常,服务器在Workbench中可见,服务器管理浏览器"标签
我的下一步是在服务器上部署一个简单容器并测试REST GET和POST调用,因此我按照问题中提到的步骤进行操作:HelloWorld using Drools Workbench & KIE Server
Java和DRL代码的唯一变化是关于包。下面是我的Java代码:
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文件代码:
package test.myproject;
import test.myproject.HelloWorld;
rule "hello"
when
HelloWorld(message == "Joe");
then
System.out.println("Hello Joe!");
end
代码已成功构建并在服务器上作为容器部署。使用RESTClient / PostMan / Advanced REST Client的GET查询可以给出正确的响应。
<?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>
然而,当我向具有以下内容的容器发布时:
<batch-execution lookup="defaultKieSession">
<insert out-identifier="message" return-object="true" entrypoint="DEFAULT">
<test.myproject.HelloWorld>
<message>Joe</message>
</test.myproject.HelloWorld>
</insert>
请注意,我确实根据代码更改对XML进行了更改。我确实尝试了不同的选项,比如等,但我得到了回复:
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但得到了响应:
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-12-10 10:59:09,208 WARN [org.jboss.resteasy.core.ExceptionHandler](默认任务-48)无法执行:javax.ws.rs.NotAllowedException:找不到POST的资源方法,使用Allow标头返回405 在org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:375)[resteasy-jaxrs-3.0.8.Final.jar:] 在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 WARN [org.jboss.resteasy.core.ExceptionHandler](默认任务-50)无法执行:javax.ws.rs.NotSupportedException:无法使用内容类型 在org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:380)[resteasy-jaxrs-3.0.8.Final.jar:] 在org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:114)[resteasy-jaxrs-3.0.8.Final.jar:]
答案 0 :(得分:2)
现在正在运作。需要进行的更改如下:
在POST期间调用的URL是: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服务器将Xstream用作编组器: 标题名称:X-KIE-ContentType 标头值XSTREAM
因此设置正确的标题
最后,XML应采用以下形式:
<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>
注意输出&#34; Hello Joe!&#34;在命令提示符下。
感谢 Maciej Swiderski 获取所有支持