1

ブログで入手可能な情報を使用して、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 の [Server Management Browser] タブの下に表示されます。

私の次のステップは、単純なコンテナーをサーバーにデプロイし、REST GET および POST 呼び出しをテストすることです。したがって、質問: Drools Workbench と KIE サーバーを使用した HelloWorldで説明されている手順に従いました。

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>

ただし、以下のコンテンツを含むコンテナーに POST すると:

<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 警告 [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:]

4

1 に答える 1

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 ヘッダーを設定して、Xstream をマーシャラーとして使用するように KIE Server に通知することもできます。 ヘッダー名: 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>

「Hello Joe!」という出力に注意してください。コマンドプロンプトで。

Maciej Swiderski のすべてのサポートに感謝します

于 2015-12-11T05:39:14.443 に答える