1

Orion からイベントが送信されるたびに、Proton インスタンスが java.lang.NullPointerException で失敗する

これはプロトンのログです:

proton_1 | 01-Jul-2016 09:46:03.117 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom started event message body reader
proton_1 | 01-Jul-2016 09:46:03.125 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom Event: ApeContextUpdate
proton_1 | 01-Jul-2016 09:46:03.126 SEVERE [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom Could not parse XML NGSI event java.lang.NullPointerException, reason: null
proton_1 |  last attribute name: null last value: null
proton_1 | 01-Jul-2016 09:46:03.130 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom finished event message body reader
proton_1 | 01-Jul-2016 09:46:03.131 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.resources.EventResource.submitNewEvent starting submitNewEvent
proton_1 | 01-Jul-2016 09:46:03.132 SEVERE [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.resources.EventResource.submitNewEvent Could not send event, reason: java.lang.NullPointerException, message: null

ユーザー ガイドの付録を読み、イベント名と属性リストを再確認しました。

これは、orion から送信された xml です。

POST /ProtonOnWebServer/rest/events HTTP/1.1
User-Agent: orion/0.28.0 libcurl/7.19.7
Host: localhost:8080
Accept: application/xml, application/json
Content-length: 772
Content-type: application/xml

<notifyContextRequest>
<subscriptionId>57762eb9982959644644f9ee</subscriptionId>
<originator>localhost</originator>
<contextResponseList>
    <contextElementResponse>
    <contextElement>
        <entityId type="Ape" isPattern="false">
        <id>u1</id>
        </entityId>
        <contextAttributeList>
        <contextAttribute>
            <name>carsharing</name>
            <type>urn:x-ogc:def:trs:IDAS:1.0:ISO8601</type>
            <contextValue>2016-07-01T11:01:06</contextValue>
        </contextAttribute>
        </contextAttributeList>
    </contextElement>
    <statusCode>
        <code>200</code>
        <reasonPhrase>OK</reasonPhrase>
    </statusCode>
    </contextElementResponse>
</contextResponseList>
</notifyContextRequest>

これは Proton プロジェクトの定義です (ところで、残りの API も NullPointerException で失敗するため、これはサーバー ファイルシステムからコピーされたプロジェクトです)。

{
"epn": {
    "events": [
    {
        "name": "ApeContextUpdate",
        "createdDate": "Fri Jul 01 2016",
        "attributes": [
        {
            "name": "entityId",
            "type": "String",
            "dimension": "0"
        },
        {
            "name": "entityType",
            "type": "String",
            "dimension": "0"
        },
        {
            "name": "carsharing",
            "type": "Date",
            "dimension": "0"
        }
        ]
    }
    ],
    "epas": [],
    "contexts": {
    "temporal": [],
    "segmentation": [],
    "composite": []
    },
    "consumers": [],
    "producers": [],
    "name": "t0"
}
}

これは私のdocker-composeファイルです:

mongo:
  image: mongo:2.6
  command: --smallfiles --quiet

proton:
  image: fiware/proactivetechnologyonline
  ports:
      - "8080:8080"

orion:
  image: fiware/orion:0.28
  links:
    - mongo
    - proton
  command: -dbhost mongo --silent
  ports:
      - "1026:1026"

Orion 0.28 (XML 通知をサポートする最後のバージョン) と最新の Proton を使用しています

更新 1 - catalina.log

07-Jul-2016 07:52:39.914 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom started event message body reader
07-Jul-2016 07:52:39.924 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom Event: ApeContextUpdate
07-Jul-2016 07:52:39.924 SEVERE [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom Could not parse XML NGSI event java.lang.NullPointerException, reason: null
 last attribute name: null last value: null
07-Jul-2016 07:52:39.928 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.providers.EventXmlNgsiMessageReader.readFrom finished event message body reader
07-Jul-2016 07:52:39.929 INFO [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.resources.EventResource.submitNewEvent starting submitNewEvent
07-Jul-2016 07:52:39.929 SEVERE [http-nio-8080-exec-1] com.ibm.hrl.proton.webapp.resources.EventResource.submitNewEvent Could not send event, reason: java.lang.NullPointerException, message: null
4

1 に答える 1

1

問題は、Proton インスタンスがプロジェクトの JSON 定義ファイルで実際に構成されていないことです。そのため、任意のタイプの POST を送信すると、Proton のメタデータにそのようなイベントが見つからないため、常に NullPointerException が発生します。

http://proactive-technology-online.readthedocs.io/en/latest/Proton-InstallationAndAdminGuide/index.html (管理部分用に Apache Tomcat をセットアップ)で説明されているように、インスタンスの管理インターフェイスを構成してみてください。

次に、次のクエリを実行します GET //<ip of the machine running Proton>:8080/ProtonOnWebServerAdmin/resources/definitions。これにより、このインスタンスが持つすべてのプロジェクト定義が返されます...そして、リストにこれが表示された場合は、次を実行して特定のプロジェクトの定義を取得できます GET /<ip of the machine running Proton>:8080/resources/definitions/{definition_name}。これは何も返さないか、空になると思います。

ここで説明されているように、RESTful インターフェイスを使用して定義を更新できます

于 2016-07-04T14:27:25.583 に答える