我有和我想要动态提取Jira的问题,以便将它们保存在ElasticSearch上。我使用自定义代理服务连接Jira(通过Jira连接器),获取项目(首先我想保存项目的信息)并将此信息传递给Elastic。以下是代理服务的顺序:
<?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>
以下是样本请求:
{
"username":"MyName",
"password":"AnStrongPassword",
"uri":"JiraURL",
"id":"MyProject",
"uriEl":"http://localhost:9200",
"indexName":"jira",
"type":"project",
"message":"Testing"
}
默认情况下,其他参数(Endpoint,out Sequence和Fault Sequence)。
问题是,当我尝试通过WSO2 ESB上的“尝试测试服务”选项发送此请求时,出现以下错误:
连接到Tryit ajax代理
时出错
我测试了相同的代码,但只使用了Jira连接(没有获取项目或连接到Elastic),并且发生了同样的错误。
看到这个错误,我想问题是在阅读JSON请求之前,但我不知道它是否与端点有关(我认为这个场景不一定是端点)。 / p>
提前致谢。
答案 0 :(得分:0)
此问题完全独立于jira连接器等。问题在于“试用”工具。此工具不是为测试目的而推荐的。而不是尝试通过soap ui调用代理服务。
如果您在尝试发生错误时共享屏幕截图,我也可以对此进行评论。
答案 1 :(得分:0)
几天后,我发现了另一个解决我的问题的方法而没有使用代理服务。为了将ESB与Jira连接,我在ESB上创建了这个API:
<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>
调用此API的命令很简单:
curl -v -X GET http://localhost:8280/transport_service > jira-db.json
最后,如果你想在弹性上插入这个json,你可以通过curl跟随典型的PUT:
curl -XPUT 'http://localhost:9200/jira/jira/1' -d @jira-db.json
此外,您可以在每日bash脚本上编写这两个命令(使用您的计划任务列表),获得与在WSO2ESB上安排代理服务相同的结果:
#!/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"