2016-06-13 8 views
1

Ich habe und Szenario, wo ich dynamisch Probleme von Jira extrahieren möchte, um sie auf ElasticSearch zu speichern. Ich benutze einen benutzerdefinierten Proxy-Dienst, der mit Jira (via Jira-Connector) verbindet, ein Projekt (zuerst möchte ich die Informationen des Projekts speichern) und übergebe diese Informationen an Elastic. Es folgt die in der Sequenz des Proxy-Dienst:Fehler mit WSO2 ESB beim Versuch, eine Verbindung zu Jira und ElasticSearch herzustellen

<?xml version="1.0" encoding="UTF-8"?> 
<inSequence xmlns="http://ws.apache.org/ns/synapse"> 
<property expression="json-eval($.username)" name="username"/> 
<property expression="json-eval($.password)" name="password"/> 
    <property expression="json-eval($.uri)" name="uri"/> 
    <property expression="json-eval($.id)" name="id"/> 
    <property expression="json-eval($.uriEl)" name="uriEl"/> 
    <property expression="json-eval($.indexName)" name="indexName"/> 
    <property expression="json-eval($.type)" name="type"/> 
    <property expression="json-eval($.message)" name="message"/> 
    <jira.init> 
     <username>{$ctx:username}</username> 
     <password>{$ctx:password}</password> 
     <uri>{$ctx:uri}</uri> 
    </jira.init> 
    <jira.getProject> 
     <projectIdOrKey>{$ctx:id}</projectIdOrKey> 
    </jira.getProject> 
    <property expression="json-eval($.project)" name="project" 
    scope="default" type="STRING"/> 
    <elasticsearch.init> 
     <apiUrl>{$ctx:uriEl}</apiUrl> 
    </elasticsearch.init> 
    <elasticsearch.createDocumentWithIndex> 
     <indexName>{$ctx:indexName}</indexName> 
     <type>{$ctx:type}</type> 
     <message>{$ctx:message}</message> 
     <body>{$ctx:project}</body> 
    </elasticsearch.createDocumentWithIndex> 
    <respond/> 
</inSequence> 

Und hier ist die Probe Anfrage:

{ 
    "username":"MyName", 
    "password":"AnStrongPassword",  
    "uri":"JiraURL",   
    "id":"MyProject", 
    "uriEl":"http://localhost:9200", 
    "indexName":"jira", 
    "type":"project", 
    "message":"Testing" 
} 

Die anderen Parameter (Endpoint, aus Sequenz und Fehler Sequence) standardmäßig sind.

Das Problem ist, dass, wenn ich versuche, diese Anfrage zu senden über ‚Versuchen Sie die Test-Service‘ Option auf WSO2 ESB, bekomme ich folgende Fehlermeldung:

Error connecting to the Tryit ajax proxy

Ich habe den gleichen Code getestet, sondern nur die Verwendung von Jira-Verbindung (ohne ein Projekt zu erhalten oder eine Verbindung zu Elastic herzustellen), und derselbe Fehler tritt auf.

Mit Blick auf diesen Fehler, nehme ich an, dass das Problem vor dem Lesen der JSON-Anfrage ist, aber ich weiß nicht, ob es mit dem Endpunkt verwandt ist (ich denke, dass es für diesen Fall kein Endpunkt ist).

Vielen Dank im Voraus.

+0

Bitte testen Sie zuerst durch Postbote oder einen anderen RestClient, für die Anschlüsse, TryIt Tool wird nicht immer Erfolg, weil Sie Header auch senden müssen. –

Antwort

0

Dieses Problem ist völlig unabhängig von dem Jira-Anschluss usw. Problem ist mit dem "try it" -Tool. Dieses Tool wird für Testzwecke nicht empfohlen. Versuchen Sie stattdessen, den Proxy-Dienst über soap ui aufzurufen.

Wenn Sie einen Screenshot teilen, wenn der Versuch es Fehler auftritt, kann ich dazu auch kommentieren.

+0

Danke Amila, ich habe das Problem mit Soap UI gelöst. –

0

Nach ein paar Tagen habe ich eine andere Lösung für mein Problem gefunden, ohne Proxy-Dienste zu verwenden. Um eine Verbindung ESB mit Jira, habe ich diese API auf ESB:

<api xmlns="http://ws.apache.org/ns/synapse" name="transport_service" context="/transport_service"> 
<resource methods="GET"> 
    <inSequence> 
    <jira.init> 
     <uri>MyURL</uri> 
     <username>MyUser</username> 
     <password>3MyPass</password> 
    </jira.init> 
    <jira.searchJira> 
     <query>project=MyProject</query> 
     <maxResults>50000</maxResults> 
     <fields>MyField1,MyField2,etc</fields> 
    </jira.searchJira> 
    <respond/> 
    </inSequence> 
    <outSequence> 
    <log level="full"/> 
    <property name="messageType" value="application/xml" scope="axis2"/> 
    <send/> 
    </outSequence> 
</resource> 
</api> 

Der Befehl diese API zu nennen, ist einfach:

curl -v -X GET http://localhost:8280/transport_service > jira-db.json 

Schließlich, wenn Sie diese json auf elastischen einfügen möchten, können Sie folgen Sie dem typischen PUT über curl:

curl -XPUT 'http://localhost:9200/jira/jira/1' -d @jira-db.json 

Zusätzlich Sie beiden Befehle auf einem täglichen bash-Skript schreiben (die geplante Aufgabe Liste verwenden), um das gleiche Ergebnis bekommen, dass auf WSO Ihren Proxy-Dienst Scheduling 2ESB:

#!/bin/bash 

curl -v -X GET http://localhost:8280/transport_service > jira-db.json 
curl -XPUT 'http://localhost:9200/jira-dev/jira/1' -d @jira-db.json 
echo "Daily load completed" 
Verwandte Themen