编写自定义扩展 Siddhi
Writing a Custom Extension Siddhi
我有一个 java 程序用于创建 siddhi 扩展,我的代码是下一个:
package co.com.easysol.phisingRestClient;
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonReader;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
public class App {
public static void main(String[] args) {
float res = new App().phisingProbability("http://dinas.tomsk.ru/js/index.html?paypal.com/uk/cgi-bin/");
System.out.println("res: " + res);
}
public float phisingProbability(String url) {
float res = 0;
String e = null;
try {
Client client = ClientBuilder.newClient();
e = client.target("http://52.37.125.225:3000/phishing").queryParam("url", url).request(MediaType.TEXT_HTML)
.get(String.class);
try (JsonReader jr = Json.createReader(new StringReader(e))) {
String valor = jr.readObject().getString("result");
try {
res = Float.parseFloat(valor);
} catch (Exception ex1) {
res = 0;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return res;
}
}
还有我的Custom.siddhiext:
url=co.com.easysol.phisingRestClient.App
在我的 ExecutionPlan 中,我使用了下一个代码:
from DSBStream
select custom:url(meta_phr_id_pharming_resume) as porc
insert into conteo;
custom.siddhiext 文件在 /repository/components/lib 中,但我有下一个错误:
'url' is neither a function extension nor an aggregated attribute extension in execution plan "ExecutionPlan"
为什么?
这里的问题是您的 class 没有在 Siddhi 中扩展 class。由于您的要求是编写自定义函数,因此修改它以扩展 FunctionExecutor 并覆盖所需的方法 as in this document.
有关扩展的更多信息可以是 found here。
您可以使用 archetype 生成 custom siddhi extensions 以及更多资源名称中的 Custom.siddhiext 但是当您使用自定义类型时请检查一下。
我有一个 java 程序用于创建 siddhi 扩展,我的代码是下一个:
package co.com.easysol.phisingRestClient;
import java.io.StringReader;
import javax.json.Json;
import javax.json.JsonReader;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
public class App {
public static void main(String[] args) {
float res = new App().phisingProbability("http://dinas.tomsk.ru/js/index.html?paypal.com/uk/cgi-bin/");
System.out.println("res: " + res);
}
public float phisingProbability(String url) {
float res = 0;
String e = null;
try {
Client client = ClientBuilder.newClient();
e = client.target("http://52.37.125.225:3000/phishing").queryParam("url", url).request(MediaType.TEXT_HTML)
.get(String.class);
try (JsonReader jr = Json.createReader(new StringReader(e))) {
String valor = jr.readObject().getString("result");
try {
res = Float.parseFloat(valor);
} catch (Exception ex1) {
res = 0;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return res;
}
}
还有我的Custom.siddhiext:
url=co.com.easysol.phisingRestClient.App
在我的 ExecutionPlan 中,我使用了下一个代码:
from DSBStream
select custom:url(meta_phr_id_pharming_resume) as porc
insert into conteo;
custom.siddhiext 文件在 /repository/components/lib 中,但我有下一个错误:
'url' is neither a function extension nor an aggregated attribute extension in execution plan "ExecutionPlan"
为什么?
这里的问题是您的 class 没有在 Siddhi 中扩展 class。由于您的要求是编写自定义函数,因此修改它以扩展 FunctionExecutor 并覆盖所需的方法 as in this document.
有关扩展的更多信息可以是 found here。
您可以使用 archetype 生成 custom siddhi extensions 以及更多资源名称中的 Custom.siddhiext 但是当您使用自定义类型时请检查一下。