非托管扩展neo4j上的密码查询

英国广播公司

我的neo4j服务器有一个不受管的扩展。

以及类似以下的代码。

@Path("/helloworld")
public class HelloWorldResource {

    private final GraphDatabaseService database;

    public HelloWorldResource(@Context GraphDatabaseService database) {
        this.database = database;
    }

   @GET
   @Produces(MediaType.TEXT_PLAIN)
   @Path("/{nodeId}")
   public Response hello(@PathParam("nodeId") long nodeId) {
        String res = ""; 

        try ( Transaction ignored = database.beginTx();)
        {
            //@@problem
            Result result = database.execute( "MATCH (n:KISI) where id(n)=1 return n" );

        } catch (Exception e) {
            res = "Error = " + e.getMessage();
        }

        return Response
            .status(Status.OK)
            .entity(("nodeId =" + nodeId + " " + res).getBytes(Charset
                    .forName("UTF-8"))).build();
    }
}

当我部署代码时,我得到了500个内部错误。如果我删除代码

结果结果= database.execute(“ MATCH(n:KISI)其中id(n)= 1返回n”);

那么一切都很好。

我检查了日志文件,错误如下

2015年8月13日,上午3:34:36 com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException严重:无法将MappableContainerException中包含的异常映射到响应,然后重新抛出到HTTP容器java.lang.NoSuchMethodError: org.neo4j.graphdb.GraphDatabaseService.execute(Ljava / lang / String;)Lorg / neo4j / graphdb / Result; 在org.neo4j.examples.server.unmanaged.HelloWorldResource.hello(HelloWorldResource.java:55)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at com.sun.jersey.spi.container.JavaMethodInvokerFactory $ 1.invoke(JavaMethodInvokerFactory.java:java.lang.reflect.Method.invoke(Method.java:606) 60),位于com.sun.jersey.server。

那我的代码怎么了?

FylmTM

我猜您pom.xml中的Neo4j发行版本和maven依赖版本不相同。

但是有几件事要检查:

1)您应该始终关闭Result对象。例子:

try(Result result = database.execute( "MATCH (n:KISI) where id(n)=1 return n" )) {
    // do stuff here
}

```

2)异常不是在try-catch以后发生,而是以后发生您应该将代码更改为此:

try ( Transaction tx = database.beginTx()) {
    String query = "MATCH (n:KISI) where id(n)=1 return n";
    // use result with try-with-resource to ensure that it will be closed
    try(Result result = database.execute(query)) {
        // do stuff you need with result here
        return Response.ok("nodeId =" + nodeId).build();
    }

    tx.success(); // mark transaction as successful 
} catch (Exception e) {
    // If exception occurs - send exception message with 500 status code
    // It's good idea to write Exception stacktrace to log there
    return Response.serverError().entity(e.getMessage()).build()      
}

3)您应该检查非托管扩展.jar文件的构建方式。

  • 所有Neo4j依赖项都应provided位于pom.xml中(Neo4j发行版中已经存在)。
  • 检查pom.xml中的数据库版本和依赖项版本是否相同。GraphDatabaseService::execute方法是最近发明的(如果我没记错的话,是2.2.3)。可能您的数据库发行版比您的Maven依赖项还旧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

测试Neo4j非托管扩展

来自分类Dev

Neo4j非托管扩展和GuardTimeoutException

来自分类Dev

Neo4j非托管扩展与Spring Data

来自分类Dev

Neo4j非托管扩展中的类路径

来自分类Dev

加速Neo4j密码查询

来自分类Dev

加速Neo4j密码查询

来自分类Dev

Neo4j密码查询的性能

来自分类Dev

Neo4j服务器无法以非托管扩展名启动

来自分类Dev

将自定义登录配置添加到neo4j非托管扩展

来自分类Dev

Neo4j Java非托管服务器扩展未运行

来自分类Dev

将自定义登录配置添加到neo4j非托管扩展

来自分类Dev

Neo4j Java非托管服务器扩展未运行

来自分类Dev

在Neo4j 2中的托管扩展上运行自动化测试

来自分类Dev

Neo4j非托管扩展-向Web服务器添加自定义请求过滤器

来自分类Dev

Tinkerpop Neo4j密码查询不起作用

来自分类Dev

Neo4j密码查询带有参数的ORDER BY

来自分类Dev

结合不同的Neo4j密码查询

来自分类Dev

对UNION结果密码查询neo4j的后处理

来自分类Dev

Neo4j密码查询以合并结果

来自分类Dev

撤消最后的neo4j密码查询

来自分类Dev

密码查询Neo4j ForEach合并返回?

来自分类Dev

用于csv导入的neo4j密码查询

来自分类Dev

如何提高neo4j中密码查询的速度?

来自分类Dev

Neo4j密码查询在收集中收集

来自分类Dev

Neo4J密码查询“继承的”术语

来自分类Dev

将参数传递给neo4j密码查询

来自分类Dev

Neo4j密码查询真的很慢

来自分类Dev

Spring数据Neo4j密码查询

来自分类Dev

来自Training的Neo4j密码查询