Star

java-client

client是在每次查询时都需要连接一下吗?我直接把client创建成单例的bean会报错,

ExecutionResponse executionResponse = client.get().execute(sessionID, statement);

client拿不到,会报空指针

可以建立一个长连接吧

没太明白,能详细说下吗?目前我是在每次查询千要调用一下connect

private ThreadLocal<GraphService.Client> client = new ThreadLocal<>();

感觉是这个导致了没法用bean吧

connect了吗?

@Bean
    public GraphClient graphClient() {
        RepoProps.Nebulas.Nebula courseLineage = repoProps.getNebula().getCourseLineage();
        List<HostAndPort> address = courseLineage.getNodes().stream().map(HostAndPort::fromString).collect(Collectors.toList());
        GraphClient client = new GraphClientImpl(address);
        client.setUser(courseLineage.getUsername());
        client.setPassword(courseLineage.getPassword());
        client.connect();
        return client;
    }

我创建了这个bean,但是使用的时候会npe

目前的GraphClient在每次request请求打过来都需要connect一下才可以使用,想问下用ThreadLocal的原因是什么呢?

ThreadLocal是线程独享的,不同线程拿不到client实例,为空是正常的。同一个线程应该不需要多次连接吧。

这样会导致springmvc的应用,每次请求都必须要connect和close一下,对响应时间有损耗

可以提一个问题,问下java客户端是否支持:连接池的形式创建连接。

浙ICP备20010487号