我们正在尝试从部署到WebLogic 12c的WebApp连接到HBase服务器。
WebApp使用包含HBase客户端连接代码的jar文件。此代码通过HTablePool实例连接到HBase,当第一次发出HTable请求时,该实例被延迟初始化为:
public HTableInterface getTable(String tableName) {
if (pool == null) {
logger.info("Initializing connection to HBase");
final Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "<HBaseHost>");
pool = new HTablePool(config, Integer.MAX_VALUE);
logger.info("HTable pool created");
}
return = pool.getTable(tableName);
}
从JUnit调用此代码时工作正常(即不将其部署到WebLogic)。但是,它部署到WL并从WebApp调用,抛出以下异常(请注意,我用,等等替换了所有特定的连接细节。
信息:启动客户端连接,connectString =:2181 sessionTimeout = 180000 watcher = hconnection 2013年6月14日17:28:06 org.apache.zookeeper.ClientCnxn $ SendThread startConnect 信息:打开与服务器/:2181的套接字连接 13/06/14 17:28:06 INFO zookeeper.RecoverableZooKeeper:这个过程的标识符是6504 @ 2013年6月14日17:28:06 org.apache.zookeeper.ClientCnxn $ SendThread运行 警告:会话0x0表示服务器空,意外错误,关闭套接字连接并尝试重新连接 java.lang.IllegalArgumentException:未注册可以处理名为Client的配置的配置 在com.bea.common.security.jdkutils.JAASConfiguration.getAppConfigurationEntry(JAASConfiguration.java:130) 在org.apache.zookeeper.client.ZooKeeperSaslClient。(ZooKeeperSaslClient.java:92) 在org.apache.zookeeper.ClientCnxn $ SendThread.startConnect(ClientCnxn.java:938) 在org.apache.zookeeper.ClientCnxn $ SendThread.run(ClientCnxn.java:973) 13/06/14 17:28:07 WARN zookeeper.RecoverableZooKeeper:可能是瞬态的ZooKeeper异常:org.apache.zookeeper.KeeperException $ ConnectionLossExce ption:KeeperErrorCode = / hbase / master的ConnectionLoss 13/06/14 17:28:07 INFO util.RetryCounter:在重试#1之前睡觉2000毫秒......
看起来我们可能缺少一些额外的JAAS配置来允许来自WL的传出连接?
非常感谢任何帮助。
答案 0 :(得分:3)
好的,所以经过一些谷歌搜索后我们发现这是由于:
https://issues.apache.org/jira/browse/ZOOKEEPER-1696
不使用SASL时WebLogic / Zookeeper组合的问题。
上面的Zookeeper Jira链接到Zookeeper源的修复程序,遗憾的是我们无法使用,因为我们必须使用Cloudera CDH 4.2.2
我们很可能会切换到JBoss。至少JBoss 5(我们可以运行的最低版本)没有显示这个问题。我们还将尝试JBoss 6&amp; 7,看看会发生什么。
接受这个作为答案,希望它对某人有用。