2015-12-10 6 views
1

Я мог бы установить KIE Execution Server (6.3.0.Final) и Workbench (6.3.0.Final) на Wildfly 8.1.0.Final, используя информацию в блоге: http://mswiderski.blogspot.in/2015/10/installing-kie-server-and-workbench-on.html Оба сервера и Workbench работают отлично, и сервер отображается в Workbench в разделе «Браузер управления сервером».helloworld на Kie Workbench и Kie Server версии 6.3.0

Мой следующий шаг заключается в развертывании простой контейнер на сервере и тест 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 

код успешно построен и развернут в контейнере на сервере. Запрос GET с использованием RESTClient/PostMan/Advanced REST Client дает правильный ответ.

<?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, возвращает 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.resteas y.core.ExceptionHandler] (задание по умолчанию-50) не удалось выполнить: javax.ws.rs.NotSupportedException: нельзя использовать тип контента на org.jboss.resteasy.core.registry.SegmentNode.match (SegmentNode.java:380) [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:]

ответ

1

Он работает сейчас. Изменения необходимо следующие:

URL для вызова во время процедуры POST является: http://localhost:8080/kie-server/services/rest/server/containers/instances/myproject

С 6.3.0 дальнейших случаев необходимо использовать (Обратите внимание на него :))

Кия сервер в 6.3.0 поддерживает JAXB, JSON и Xstream. Поскольку по умолчанию JAXB вам нужно предоставить действительный контент JAXB.В качестве альтернативы вы можете установить заголовок HTTP, чтобы сообщить Кий серверу использовать XSTREAM в ИАС: Имя заголовка: X-КИЙ-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> 

Следите за выходом «Привет, Джо!». в командной строке.

Благодаря Maciej Swiderski за поддержку