2016-06-20 6 views
0

Ich habe einen Ereignisempfänger mit benutzerdefinierter Eingabezuordnung, da mein Ereignisformat ein wenig anders war. Es hat keine Meta oder Korrelationsattribute. Beispiel ist:Benutzerdefinierte Eingabezuordnungen JSON: Konnte keine Übereinstimmungen für das eingehende Ereignis mit JSONPath finden

{ "ts":"2016-05-08T08:59:47.363764Z", 
    "uid":"CLuCgz3HHzG7LpLwH9", 
    "id.orig_h":"172.30.26.119", 
    "id.orig_p":51976, 
    "id.resp_h":"172.30.26.160", 
    "id.resp_p":22, 
    "version":2, 
    "client":"SSH-2.0-OpenSSH_5.0", 
    "server":"SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6", 
    "cipher_alg":"arcfour256", 
    "mac_alg":"hmac-md5", 
    "compression_alg":"none", 
    "kex_alg":"diffie-hellman-group-exchange-sha1", 
    "host_key_alg":"ssh-rsa", 
    "host_key":"8d:df:71:ac:29:1f:67:6f:f3:dd:c3:e5:2e:5f:3e:b4"} 

Es gibt keine Newline ist, habe ich hinzugefügt, um es lesbar zu machen. Dementsprechend habe ich einen Ereignisempfänger mit einer benutzerdefinierten Eingangszuordnung:

<?xml version="1.0" encoding="UTF-8"?> 
<eventReceiver name="sshlogreceiver" statistics="disable" 
trace="disable" xmlns="http://wso2.org/carbon/eventreceiver"> 
<from eventAdapterType="http"> 
    <property name="transports">all</property> 
</from> 
<mapping customMapping="enable" type="json"> 
    <property> 
     <from jsonPath="$.ts"/> 
     <to name="ts" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.uid"/> 
     <to name="uid" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.orig_h"/> 
     <to name="id_orig_h" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.orig_p"/> 
     <to name="id_orig_p" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.resp_h"/> 
     <to name="id_resp_h" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.id.resp_p"/> 
     <to name="id_resp_p" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.version"/> 
     <to name="version" type="int"/> 
    </property> 
    <property> 
     <from jsonPath="$.client"/> 
     <to name="client" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.server"/> 
     <to name="server" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.cipher_alg"/> 
     <to name="cipher_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.mac_alg"/> 
     <to name="mac_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.compression_alg"/> 
     <to name="compression_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.kex_alg"/> 
     <to name="kex_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.host_key_alg"/> 
     <to name="host_key_alg" type="string"/> 
    </property> 
    <property> 
     <from jsonPath="$.host_key"/> 
     <to name="host_key" type="string"/> 
    </property> 
</mapping> 
<to streamName="SSHInStream" version="1.0.0"/> 
</eventReceiver> 

Die Probe Fall Eingangsstrom:

{ 
"event": { 
    "payloadData": { 
     "ts": "data5", 
     "uid": "data5", 
     "id_orig_h": "data1", 
     "id_orig_p": 70, 
     "id_resp_h": "data3", 
     "id_resp_p": 4, 
     "version": 50, 
     "client": "data1", 
     "server": "data2", 
     "cipher_alg": "data5", 
     "mac_alg": "data3", 
     "compression_alg": "data3", 
     "kex_alg": "data4", 
     "host_key_alg": "data4", 
     "host_key": "data4" 
    } 
} 
} 

Ich habe nicht event und payload-Tags in meinen Veranstaltungen wie es ein einfaches Protokoll ist Datei. Wenn ich versuche, Ereignisse zu senden, ich habe einen Fehler auf der Konsole Spruch:

ERROR

{org.wso2.carbon.event.receiver.core.internal.type.json.JSONInputMapper} - Could not find any matches for the incoming event with JSONPath : [email protected] ,hence dropping the event 

ich benutzerdefinierte Eing.zuord ich falsch oder was Sie sonst noch brauchen getan zu tun?

Antwort

0

Der Grund für diesen Fehler war das Vorhandensein von Punkten (.) In den Parametern meines Ereignisses. Sobald ich sie durch das andere Zeichen ersetzt habe, habe ich in meinem Fall Unterstriche gewählt, es hat gut funktioniert.

Verwandte Themen