Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OrientDB-OrientDB函数未使用Java执行_Java_Javascript_Orientdb - Fatal编程技术网

OrientDB-OrientDB函数未使用Java执行

OrientDB-OrientDB函数未使用Java执行,java,javascript,orientdb,Java,Javascript,Orientdb,我有一个具有以下Javascript函数的数据库。但是,当我尝试使用Java执行相同的函数时,它不起作用 我正在尝试使用以下Java代码进行连接: ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin"); OFunction func = db.getMetadata().getFunctionLibrary().getFuncti

我有一个具有以下Javascript函数的数据库。但是,当我尝试使用Java执行相同的函数时,它不起作用

我正在尝试使用以下Java代码进行连接:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/localDBDocumentAPI").open("admin", "admin");
OFunction func = db.getMetadata().getFunctionLibrary().getFunction("CreateLinks");
func.execute();
当我运行Java代码时,它运行时没有任何错误。但没有结果

String URL = "remote:localhost/localDBDocumentAPI";
String functionName = "funfun";
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
    db.open("admin", "admin");
    OFunction f = new OFunction();
    f.setName(functionName);
    f.setLanguage("javascript");
    f.setParameters(new ArrayList());
    f.setCode("print(\"hellooo\\n\");");
    f.save();
}

try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
    db.open("admin", "admin");
    OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
    f.execute();
}

try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(URL)) {
    db.open("admin", "admin");
    OFunction f = db.getMetadata().getFunctionLibrary().getFunction(functionName);
    db.command(new OCommandScript("javascript", f.getCode())).execute();
}
您可以看到第一个在客户端执行,第二个在服务器端执行(我相信这是您的意图)。 尽管要实现这一点,您必须更改$ODB_HOME/orientdb server config.xml,以允许在服务器端运行javascript

我的看起来像这样:

    <handler class="com.orientechnologies.orient.server.handler.OServerSideScriptInterpreter">
        <parameters>
            <parameter value="true" name="enabled"/>
            <parameter value="SQL" name="allowedLanguages"/>
            <parameter value="javascript" name="allowedLanguages"/>
        </parameters>
    </handler>

看看这个

您可以看到第一个在客户端执行,第二个在服务器端执行(我相信这是您的意图)。 尽管要实现这一点,您必须更改$ODB_HOME/orientdb server config.xml,以允许在服务器端运行javascript

我的看起来像这样:

    <handler class="com.orientechnologies.orient.server.handler.OServerSideScriptInterpreter">
        <parameters>
            <parameter value="true" name="enabled"/>
            <parameter value="SQL" name="allowedLanguages"/>
            <parameter value="javascript" name="allowedLanguages"/>
        </parameters>
    </handler>


关于此,请参阅。

上述代码本应可以工作。中给出了相同的示例,但无法工作

起作用的是:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);

函数可以通过命令执行。如上面的代码所示。

上面的代码应该可以工作。中给出了相同的示例,但无法工作

起作用的是:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("remote:localhost/test").open("admin", "admin");
Integer result = db.command(new OCommandFunction("testfunc")).execute(1,2);

函数可以通过命令执行。如上面的代码所示。

您能详细说明一下“它不工作”吗?你是否收到一条错误消息、一个异常、什么都没有发生、发生了一些事情但不是你所期望的…?@AJPerez噢,对不起。什么也没发生。所以,为了检查我是否传递了invaild函数名(函数不存在),它给出了null指针异常。所以我认为这是获得功能,但执行不发生。当我在orient db中手动尝试时,它可以工作。它只在Java中起作用你能详细说明一下“它不起作用”吗?你是否收到一条错误消息、一个异常、什么都没有发生、发生了一些事情但不是你所期望的…?@AJPerez噢,对不起。什么也没发生。所以,为了检查我是否传递了invaild函数名(函数不存在),它给出了null指针异常。所以我认为这是获得功能,但执行不发生。当我在orient db中手动尝试时,它可以工作。它不仅仅在Java中工作