|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。
利用OpenServicesGatewayInitiativeAPI打消Eclipse插件依附性
本文先容了一个接纳XML的插件示例,以便为界说好的扩大点注册扩大。经由过程使插件可以感知ExtentionRegistry并供应OSGi服务,我们能够完成这一完全的组件退耦操纵。
插件、扩大点、OSGi
如您所知,Eclipse的组件架构是基于插件的--这意味着将一组代码组件化为单一的组件,然后利用Eclipse框架注册为其组件之一,其他组件能够绑定该组件或挪用该组件。扩大点是插件同意其他插件向公然扩大点的插件供应附加功效的办法。如今使用一切这些插件并将其包装到受控的运转时,插件可在个中静态收支,而且您能够取得OSGi(基础下去说)。
示例插件
让我们从公然扩大点的基础插件入手下手,如许能够为同义词服务注册新的字符串映照。此项服务同意其他服务注册一个词并将其映照到另外一个词(同义词)。基础扩大包括十分复杂的元素:一个词,固然另有一个新的同义词。此插件扩大点的基础布局如表1所示。
表1.示例插件的元素
插件称号com.company.SynonymRegistry扩大点同义词元素词--您想要为其增加同义词的词同义词--您想要注册的同义词
我们还要将插件注册为OSGi服务。这意味着它只在显式实行此操纵时被加载,并将可供其他客户声明性地利用。为了利用该服务,其他客户只需懂得Interface和OSGi类称号。在我们的示例中,我们不会真正挪用该服务,由于扩大点是假定的。我们将利用OSGiAPI以告诉我们此项服务收支的工夫,所以我们能够准确地注册扩大点。
如今这只是一个示例,而且利用针对此观点的扩大点大概不是最好的办法。我们用此基础示例要到达的目标是怎样静态注册新的扩大,同时申明利用OSGiAPI的插件性命周期事务。
Mediator插件
下一个插件是第三方插件,该插件懂得已知的服务和扩大点,但不想绑定到此插件,由于前面它将依靠该插件举行运转时剖析。这意味着该插件能够驻留在所援用的插件(com.company.SynonymRegistry)大概不存在的呆板上。由于我们如今生存在OSGi和静态运转时天下,以是我们想确保插件在不引发运转时妨碍或毛病的情形下运转。我们的mediator插件将承受同义词的XML文件,而且经由过程利用供应的扩展点用SynonymRegistry插件注册每一个同义词。
清单1.用于观点考证的示例XML文件- Synonyms.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <synonyms>
- <entryword="mediator"synonym="broker"/>
- <entryword="mediator"synonym="go-between"/>
- <entryword="mediator"synonym="interceder"/>
- <entryword="mediator"synonym="intermediary"/>
- <synonyms>
复制代码 Mediator插件在其start()办法中做的第一件事是用OSGi服务注册为一个服务初始化侦听器。我们要在传进start()办法的BundleContext对象上挪用OSGi服务办法addServiceListener()。以下代码展现了一个经由过程传进代码和我们感乐趣的服务ID挪用此API的示例。- context.addServiceListener(this,"com.company.SynonymRegistry");
复制代码 经由过程供应过滤器,能够告诉OSGi服务注册中央只需关照您指定服务中的形态变动。在本例中,过滤器只是SynonymRegistry类的类称号。
您大概会追本溯源。谜底就在启动序列中。在OSGi范畴,我们不是总晓得另外一服务可用的工夫,因此我们必要对此举行申明。经由过程注册为服务侦听器,我们可得知服务入手下手和中断的工夫。假如服务不成用,则同意我们缓存同义词。当服务的确可用时,我们会失掉关照并注册扩大。
<p>
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。 |
|