读取多个条目模板

时间:2013-12-02 09:15:46

标签: java jini javaspaces

我正在使用Apache River javaspaces项目,我正在尝试找出一种方法来编写一个模板,该模板读取空间中的多个条目并返回我尚未存储的那些例如:

用户将三个条目写入空格“entry1”,“entry2”,“entry3”。稍后同一个用户尝试从空间读取条目,每次空格返回“entry1”,因为它不会从空间中删除,它将始终与给定模板匹配。

写作空间:

SpaceEntry string = new SpaceEntry("User","entry1"); 
                    space.write(string, null, Lease.FOREVER);

从太空阅读:

SpaceEntry template = new SpaceEntry(); 
                    SpaceEntry read = (SpaceEntry)space.readIfExists(template,null,Long.MAX_VALUE);

$ read存储在列表中,重复读取过程。

模板:

public SpaceEntry (String o, String m){
    this.Owner = o;
    this.Message = m;
}

最后有关使用已获取的值列表动态修改模板的任何建议,以便条目保留在空格中但返回不同的条目?

我考虑过将Space中的条目存储在列表中,然后在没有剩下新条目的情况下将它们返回到Space,但这会引入各种混淆,丢失数据和松散的多用户兼容性。

EDIT1:

好的,所以在摆弄我的代码后,我想出了一种方法。

必须更改模板以使用其他参数ID。

public SpaceEntry (int id, String o, String m){
this.ID = id;
this.Owner = o;
this.Message = m;

}

现在每次用户想要添加消息时,代码必须通过将模板中的id值增加1来读取空间中的现有条目,直到没有剩余,并添加缺少id号的新消息。可以运行相同的代码来读取空间中的所有条目,并按ID号返回它们。

然而,如果其中一个条目被删除,这将构成威胁,如何代码处理丢失的ID,例如1,2,,4,,_,7任何建议?

EDIT2:

似乎可以采用事务管理器的方式......

1 个答案:

答案 0 :(得分:0)

在做了一些额外的研究后,我发现了这个问题的答案。为了读取多个条目,您必须实现一个事务管理器,它基本上将与模板匹配的所有条目读入事务,排序列表,并且管理器仅添加尚未在事务中的条目。提交事务后,空间条目保持不变,但您有完整的列表。