3. 挖掘应用网格潜力
对象存储到网格之后,即可以内存Java、C++或C#对象的方式读取数据。我们还可以利用应用网格的一些高级功能,比如对内存对象数据的并行查询操作、持续查询、并行处理等。
在本例中,我们只对网格中的数据进行一次简单的查询。列表4中的代码即是一个对所有包含"foo"的项的简单处理逻辑。
列表4:通过应用网格执行并行查询
public Object process(Entry en) {
Item i = (Item)en.getValue();
if (i != null) {
i.setComment(i.getComment() + " (modified)");
en.setValue(i);
}
return i;
}
…and to invoke this…
//Create a filter to find items in the grid
Filter theFilter = new LikeFilter("getProductName", "%foo%");
//Pass in a filter and an operation (class)
Map result = itemCache.invokeAll(theFilter, new UpdateComment());
4. 以事件方式执行网格处理逻辑
通过简单的JavaBean监听器模式即可使应用网格以事件的方式运行Java逻辑——在网格中写入或读取数据时即可触发。这很像Java的读写触发器或存储流程。列表5是一个显示网格中的更新值的事件。
列表5:网格中数据更新和提取时即触发事件
public void entryUpdated(MapEvent me) {
Item i = (Item) me.getNewValue();
System.out.println("Updated Item: " + i.getComment());
}