2

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 から呼び出されると、次の例外がスローされます (すべての特定の接続の詳細を 、 などで置き換えたことに注意してください。

情報: クライアント接続を開始しています。 .ソケット接続を閉じて再接続しようとしていますorg.apache の .client.ZooKeeperSaslClient.(ZooKeeperSaslClient.java:92)。Zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:938) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:973) 13/06/14 17:28:07 警告 Zookeeper.RecoverableZooKeeper: おそらく一時的ZooKeeper 例外: org.apache.zookeeper.KeeperException$ConnectionLossExce ption: KeeperErrorCode = ConnectionLoss for /hbase/master 13/06/14 17:28:07 INFO util.RetryCounter: 再試行 #1 の前に 2000 ミリ秒スリープ中...#1 を再試行する前に 2000 ミリ秒スリープ中...#1 を再試行する前に 2000 ミリ秒スリープ中...

WL からの発信接続を許可するための追加の JAAS 構成が欠落しているように見えますか?

どんな助けでも大歓迎です。

4

1 に答える 1

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 & 7 も試して、何が起こるか見てみましょう。

これを答えとして受け入れます。うまくいけば、誰かに役立つでしょう。

于 2013-06-17T15:58:18.660 に答える