2

現在、1 つのコヒーレンス クラスタにのみ接続しているアプリケーション (CSharp で作成) があります。このクラスターにはデータが供給され、アプリケーションがクラスターのキャッシュでこれを確認すると、これを使用して、渡された内容に関する詳細情報を取得し、それをクラスターに戻して、このデータを 2 番目のキャッシュに格納します。

私が今したいことは、アプリケーションを 2 番目のコヒーレンス クラスタに接続し、このクラスタのキャッシュに特定のデータが表示されると、このデータをもう一度取得して詳細情報を見つけ、このクラスタに戻して再び格納することです。このデータは二次キャッシュにあります。

私が抱えている問題は、2 つのキャッシュに接続するようにアプリケーションを構成する方法です。

この問題について、矛盾する回答でいくつか読んだことがあります。1 つの提案は、実行時に使用されるクラスローダーを変更することです。

この問題に関するヘルプやガイダンスをいただければ幸いです。

編集:さらに掘り下げた後、私はこの説明を見つけました。これが正しいことであるかどうかについて誰か考えがありますか?

http://forums.oracle.com/forums/thread.jspa?threadID=1518273

4

1 に答える 1

1

これをさらに詳しく調べると、上記のリンクで提案されている解決策が必要であることがわかります。拡張クライアントとして各クラスターに接続する必要があります (クラスローダーを変更する巧妙で厄介なことをしなくても、1 つのクラスターのメンバーにしかなれません)。次に、別のクラスターとキャッシュ構成を指定するためにいくつかの構成を追加します。例は次のとおりです。

<?xml version='1.0'?>
<cache-config>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>Cache_for_C1</cache-name>
      <scheme-name>extend-cache-C1</scheme-name>
    </cache-mapping>
    <cache-mapping>
      <cache-name>Cache_for_C2</cache-name>
      <scheme-name>extend-cache-C2</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>
  <caching-schemes>
    <remote-cache-scheme>
      <scheme-name>extend-cache-C1</scheme-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>C1host</address>
              <port>30200</port>
            </socket-address>
          </remote-addresses>
        </tcp-initiator>
      </initiator-config>
    </remote-cache-scheme>
    <remote-cache-scheme>
      <scheme-name>extend-cache-C2</scheme-name>
      <initiator-config>
        <tcp-initiator>
          <remote-addresses>
            <socket-address>
              <address>C2host</address>
              <port>30200</port>
            </socket-address>
          </remote-addresses>
        </tcp-initiator>
      </initiator-config>
    </remote-cache-scheme>
  </caching-schemes>
</cache-config>

うまくいけば、これは私を助けてくれたような他の誰かを助けるでしょう:)

于 2010-12-15T10:36:18.623 に答える