2017-06-14 10 views
0

私はパーティション領域Individualからデータを選択する関数を作成しました。クライアント側で関数がnullになるのを実行しようとするとき。GemFire 8.2.xのQueryService関数null値を返します

出力
[[]、ヌル]

パブリッククラスMySelectPartitionFunctionがFunctionAdapterが申告を実装して拡張{

private static final long serialVersionUID = 1L; 

    @Override 
    public void execute(FunctionContext context) { 
     Cache cache = CacheFactory.getAnyInstance(); 
      QueryService queryService = cache.getQueryService(); 

      String qstr = (String) context.getArguments(); 

      try { 
      Query query = queryService.newQuery(qstr); 
      RegionFunctionContext rContext = (RegionFunctionContext)context; 
      SelectResults results = (SelectResults) query.execute(rContext); 
      context.getResultSender().sendResult((ArrayList) (results).asList()); 
      context.getResultSender().lastResult(null); 
      } catch (Exception e) { 
      throw new FunctionException(e); 
      } 
     } 

    @Override 
    public String getId() { 
    return getClass().getName(); 
    } 

    @Override 
    public boolean hasResult() { 
     return true; 
    } 

    @Override 
    public boolean isHA() { 
     return false; 
    } 

    public void init(Properties arg0) { 
    } 

} 


public class TestFunctionQuery { 
    public static void main(String[] args) { 

     ResultCollector rcollector = null; 
     ClientCache cache; 
     Region<?, ?> individual; 

     cache = new ClientCacheFactory().set("name", "ClientWorker").set("cache-xml-file", "xml/clientCache.xml") 
       .create(); 
     individual = cache.getRegion("Individual"); 
     String qStr = "SELECT * FROM /Individual"; 

     try { 
      Set keyFilter = new HashSet(); 
      keyFilter.add(1); 

      rcollector = FunctionService 
       .onRegion(individual) 
       .withArgs(qStr) 
       .withFilter(keyFilter) 
       .execute("com.xxx.logic.MySelectPartitionFunction"); 

      Object result = rcollector.getResult(); 
      ArrayList resultList = (ArrayList)result; 
      List queryResults = new ArrayList(); 
      if (resultList.size()!=0) { 
      for (Object obj: resultList) { 
       if (obj != null) { 
       queryResults.addAll((ArrayList)obj); 
       } 
      } 
      } 
      System.out.println((queryResults)); 

     } catch (FunctionException ex) { 
      System.out.println("Exception"); 
     } 
     } 

} 

gfsh>describe region --name=Individual 
.......................................................... 
Name   : Individual 
Data Policy  : partition 
Hosting Members : server2 
server1 


Non-Default Attributes Shared By Hosting Members 

    Type |  Name  | Value 
--------- | ---------------- | ----- 
Region | size    | 3 
Partition | redundant-copies | 1 

答えて

0

私は機能とクライアントコード

に変更を行った後、レコードを取得することができました
@Override 
public void execute(FunctionContext context) { 
    Cache cache = CacheFactory.getAnyInstance(); 
    QueryService queryService = cache.getQueryService(); 

     String qstr = (String) context.getArguments(); 

     try { 
      Query query = queryService.newQuery(qstr); 
      SelectResults<?> result = (SelectResults<?>) query.execute((RegionFunctionContext) context); 
      ArrayList<?> arrayResult = (ArrayList<?>) result.asList(); 
      context.getResultSender().sendResult(arrayResult); 
      context.getResultSender().lastResult(null); 
     } catch (Exception e) { 
     throw new FunctionException(e); 
     } 

} 

ClientCache cache; 
    Region<?, ?> individual; 

    cache = new ClientCacheFactory().set("name", "ClientWorker").set("cache-xml-file", "xml/clientCache.xml") 
      .create(); 
    individual = cache.getRegion("Individual"); 


    String qStr = "SELECT r1.id,r1.firstName, r1.lastName FROM /Individual r1"; 

    try { 

     Object result = FunctionService.onRegion(individual) 
       .withArgs(qStr).execute("com.xxx.logic.MySelectPartitionFunction").getResult(); 

(id:2、firstName:Basha、lastName:Shaik)、struct(id:1、firstName:Krish、lastName:Chaitu)、struct(id:5、firstName:Vigneshwaran、lastName:Ganesan) ]、null、構造体(id:4、firstName:Arun、lastName:Kishore)、構造体(id:3、firstName:Anurag、lastName:Kshirsagar)]、null]

関連する問題