client是在每次查询时都需要连接一下吗?我直接把client创建成单例的bean会报错,
ExecutionResponse executionResponse = client.get().execute(sessionID, statement);
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客户端是否支持:连接池的形式创建连接。