报错:
10:34:20,712 INFO [ZooKeeper] Initiating client connection, connectString=192.168.0.141:2180,192.168.0.22:2181 sessionTimeout=3000 watcher=org.menagerie.DefaultZkSessionManager$SessionWatcher@14349ae
10:34:20,942 ERROR [UsersRolesLoginModule] Failed to load users/passwords/role files10:34:20,946 INFO [ClientCnxn] Opening socket connection to server 192.168.0.141/192.168.0.141:2180
就是这一步的时候报错:
csAccessor.lock();//就是这一步的时候报错:
csAccessor.put(Long.valueOf("123"),new AlertSession());
boolean a = csAccessor.containsKey(Long.valueOf("456"));
boolean b = csAccessor.containsKey(Long.valueOf("123"));
csAccessor.unlock();
获取锁的方法:
public static Lock getZKLock(){
ZkSessionManager manager = new DefaultZkSessionManager(connectionString, timeout);
Lock lock = Locksmith.reentrantLock(manager, lockPath);
return lock;
}
弄好了,我自己回答吧
我觉得是因为zookeeper是一个外部应用,当它放到jBoss里面用了以后,肯定要通过容器向系统申请资源吧,所以就默认要使用sasl和jass(暂时还搞不清楚他们两的关系,大概是混合使用的一套安全模式)。如果没有在这套安全模式里面给zookeeper做配置,那就会报错了,就像我这样。
解决这个问题有两套思路,一种是给zookeeper做安全配置,怎么配我也搞不清楚,只知道应该是在jboss-5.1.0.GA\server\default\conf\login-config.xml里面配的。
另外一种就是让zookeeper绕过sasl安全机制,直接向系统获取资源。具体就是只要在第一次调用锁之前执行这行代码就可以了:System.setProperty("zookeeper.sasl.client","false");
具体可以参见官网的这个修正:https://issues.apache.org/jira/browse/ZOOKEEPER-1657
非常感谢,解决我的问题我已经按照http://duqiangcise.iteye.com/blog/780450里面的
二、WEB-CONSOLE的安全配置
配置了,还是没有用,看来不是这个问题,有人知道是怎么回事吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。