对于我的应用程序的操作监视,我正在寻找类似于常用的"SQL连接验证"查询
选择1;
在Cassandra,使用Hector驱动程序.我尝试过像Cluster.getKnownPoolHosts()和.getConnectionManager().getActivePools()这样的事情.但是,只有当我真正尝试使用查询访问Cassandra时,它们的状态似乎才会不断更新.
我希望我的运行状况检查独立于任何需要存在的键空间或用户CF,因此只运行"虚拟"查询似乎很困难(针对什么?).当然,它不应占用大量内存或产生任何重大负载.
我可以以某种方式强制Hector更新其连接池状态而不运行真正的查询吗?
(顺便说一句:CQL甚至不接受"SELECT 1"作为有效查询.)
当我在类中使用字段注入时,如下所示:
@Inject
private MyClass myField;
Run Code Online (Sandbox Code Playgroud)
我可以对这个领域的" 安全出版 "状态做出任何假设吗?或者换一种说法,假设MyClass本身是线程安全的,那么使用这个字段时我应该注意哪些并发风险?
我的直觉通常是尽可能创建所有字段final,但这不适用于字段注入.当然,我可以使用构造函数注入,但是我通常最终只需要为代理创建一个额外的"假"no-args构造函数.没有太大问题,但使用现场注入更方便.另一种选择可能是将该字段标记为易变(或甚至使用锁定......),但这是否真的有必要?
JSR-299规范似乎没有回答这个问题.我在像Weld这样的实现上使用CDI.