2012-03-12 9 views
1

Coherenceのtangosol-coherence-override.xml構成の一部が機能しません。 サーバーを起動してデータを取得して取得できますが、CacheLoader経由でデータを取得できません。Oracle Coherenceのリードスルー構成

ありがとうございました。 CacheLoaderを

package com.example; 

import com.tangosol.net.cache.AbstractCacheLoader; 
import java.util.HashMap; 

public class DataLoader extends AbstractCacheLoader { 

    private HashMap<String, String> hashMap; 

    public DataLoader() { 
     hashMap = new HashMap<String, String>(); 
     init(); 
    } 

    private void init() { 
     hashMap.put("A", "a"); 
     hashMap.put("B", "b"); 
     hashMap.put("C", "c"); 
     hashMap.put("D", "d"); 
     hashMap.put("E", "f"); 
     hashMap.put("F", "g"); 
    } 


    public Object load(Object key) { 
     return hashMap.get(key); 
    } 
} 

はtangosol-コヒーレンス-override.xml

<coherence> 
    <cluster-config> 
     <member-identity> 
      <cluster-name>thecluster</cluster-name> 
     </member-identity> 

     <multicast-listener> 
      <!--<address>224.3.6.0</address>--> 
      <port>9100</port> 
      <time-to-live>0</time-to-live> 
     </multicast-listener> 

     <caching-scheme-mapping> 
      <cache-mapping> 
       <cache-name>ABC</cache-name> 
       <scheme-name>distributed-rxwbm</scheme-name> 
      </cache-mapping> 
     </caching-scheme-mapping> 
    </cluster-config> 

    <caching-schemes> 
     <distributed-scheme> 
      <scheme-name>distributed-rwbm</scheme-name> 
      <backing-map-scheme> 
       <read-write-backing-map-scheme> 

        <internal-cache-scheme> 
         <local-scheme/> 
        </internal-cache-scheme> 

        <cachestore-scheme> 
         <class-scheme> 
          <class-name>com.example.DataLoader</class-name> 
          <init-params> 
           <init-param> 
            <param-type>java.lang.String</param-type> 
            <param-value>{cache-name}</param-value> 
           </init-param> 
          </init-params> 
         </class-scheme> 
        </cachestore-scheme> 
       </read-write-backing-map-scheme> 
      </backing-map-scheme> 
     </distributed-scheme> 
    </caching-schemes> 
</coherence> 

ため

スタブ開始サーバー

package com.example; 

import com.tangosol.net.DefaultCacheServer; 
import com.tangosol.net.DefaultConfigurableCacheFactory; 

public class HelloWorld { 

    public static void main(String[] args) { 

     DefaultConfigurableCacheFactory factory; 
     factory = new DefaultConfigurableCacheFactory(); 

     DefaultCacheServer dcs = new DefaultCacheServer(factory); 
     dcs.startAndMonitor(5000); 
    } 
} 

読書データ

package com.example; 

import com.tangosol.net.CacheFactory; 
import com.tangosol.net.NamedCache; 

public class Reader { 
    public static void main(String[] args) { 
     CacheFactory.ensureCluster(); 
     NamedCache cache = CacheFactory.getCache("ABC"); 

     System.out.println("Value in cache is: " + cache.get("A")); 
     System.out.println("Value in cache is: " + cache.get("B")); 
     System.out.println("Value in cache is: " + cache.get("C")); 
     System.out.println("Value in cache is: " + cache.get("D")); 
    } 
} 

答えて

1
  1. 設定が間違っています。この方法では、運用構成とキャッシュ構成をマージすることはできません(少なくともトリックは必要ありません)。このようなtangosol-coherence-override.xmlcoherence-cache-config.xml

    はtangosol-コヒーレンス-override.xml:

    <?xml version="1.0" encoding="UTF-8"?> 
    <coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config" 
        xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config coherence-operational-config.xsd"> 
        <cluster-config> 
         <member-identity> 
          <cluster-name>thecluster</cluster-name> 
         </member-identity>   
         <multicast-listener> 
          <!--<address>224.3.6.0</address>--> 
          <port>9100</port> 
          <time-to-live>0</time-to-live> 
         </multicast-listener>   
        </cluster-config>   
    </coherence> 
    

    コヒーレンス・キャッシュ-config.xmlに:

    <?xml version="1.0" encoding="UTF-8"?> 
    <cache-config 
        xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd"> 
        <caching-scheme-mapping> 
         <cache-mapping> 
          <cache-name>ABC</cache-name> 
          <scheme-name>distributed-rxwbm</scheme-name> 
         </cache-mapping> 
        </caching-scheme-mapping> 
        <caching-schemes> 
         <distributed-scheme> 
          <scheme-name>distributed-rxwbm</scheme-name> 
          <backing-map-scheme> 
           <read-write-backing-map-scheme> 
            <internal-cache-scheme> 
             <local-scheme/> 
            </internal-cache-scheme> 
            <cachestore-scheme> 
             <class-scheme> 
              <class-name>com.example.DataLoader</class-name> 
              <init-params> 
               <init-param> 
                <param-type>java.lang.String</param-type> 
                <param-value>{cache-name}</param-value> 
               </init-param> 
              </init-params> 
             </class-scheme> 
            </cachestore-scheme> 
           </read-write-backing-map-scheme> 
          </backing-map-scheme> 
          <autostart>true</autostart> 
         </distributed-scheme> 
        </caching-schemes> 
    </cache-config> 
    
  2. あなたDataLoader次の2つのファイルに分割すべきですStringパラメータ(キャッシュ名の場合)を受け入れるコンストラクタがありません。
  3. 私があなたの意図を正しく理解するには、ストレージを無効にすることを検討する必要がありますReaderノードで、すなわちtangosol.coherence.distributed.localstorage=falseを設定して
+0

これらのxmlファイルをどこに保存する必要がありますか...予想される場所とその読み方を知ることができません – Varun

関連する問題