Java - Netbeans应用程序 - 如何使用Lookup传输数据?

时间:2013-04-12 14:23:57

标签: java lookup netbeans-platform listeners

在Netbeans平台(7.3)中发现了Lookup库之后,我想知道:(如何)从查找中删除对象?有垃圾收集吗?

我注意到每次向Lookup添加一个对象时,该对象从未从Lookup中“释放”,这是非常符合逻辑的,因为它的目的是保留对象。

浏览了一段时间后(Geertjan的博客,DZone,NB API文档等,不仅仅是“哦,我在谷歌找不到它!”),我没有找到如何从查找中删除元素,例如。一条消息将通过Lookup发送,并在所有侦听器使用后删除。

这向我介绍了这些问题:如何确保给定的“收听顺序”,以及如何知道所有听众已“读取”该对象?

我觉得我在想如何使用它是错误的。

欢迎任何想法,链接或提示!

修改

今晚我正在考虑这个问题,我看到了如何以另一种方式重新表述:

是否可以将Lookup管理器不仅用作服务目录/索引,还可以用作消息服务?网络上的文档没有给我答案。

正如我会使用它(这就是为什么我写“我觉得我在想如何使用它。”),我会把消息放到Lookup中来触发其他地方的动作,但是它意味着每个监听器只能读取一次消息,并在此之后被销毁。

主要问题是通过Lookup传输数据,而不仅仅是存储

我发现了这个short article about lookup data transfer,但这对我来说听起来不对,因为对象似乎永远不会从查找中释放出来。

1 个答案:

答案 0 :(得分:1)

我会反过来这样做。我会将监听器注册为#ServiceProvider。生成您Object的部分将从全局查找中请求所有侦听器并调用它们。

另一种方法可能是使用InstanceContent。但这可能导致合同太松散。