OSGI-Eclipse 扩展点,扩展机制

本文详细介绍了Eclipse基于OSGI的组件架构,重点讲解了扩展点(Extension point)、插件(Plug-in)和扩展(Extension)的概念。通过具体的代码实践,展示了如何在Eclipse中创建和实现扩展点,以及如何通过其他插件来扩展这些扩展点,从而实现功能的动态组合和扩展。
摘要由CSDN通过智能技术生成

Eclipse的组件架构师基于插件的,这就意味着将一组代码组件化为一个单一的组件,然后利用Eclipse框架注册为组件之一,其他组件可以绑定该组件或者调用该组件。

扩展点是插件允许其他插件向公开扩展点的插件提供附加功能的方法。

   

插件(Plug-in):

 

Eclipse功能实现的最小单位,包含了Java代码或者其他文件。插件位于plugins目录下,使用清单文件plugin.xml向系统说明如何继承到平台中。

  

扩展点(Extension point):

 本插件为其他插件提供的接口,插件可以自定义扩展点,也可以实现其他插件的扩展点。

 

 扩展(Extension):

 

对其他插件公开的扩展点进行的实现。

 

 Eclipse扩展机制实践:

 以下代码均在文章:http://489291468.iteye.com/blog/1887290 描述工程的基础实践。

 整个工程目录:


 

 PluginMgrCenter Bundle:

创建ExtensionMgr.java文件:

 

/**
 * 
 */
package extensionservice;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;

import sayhello.ISayHello;

/**
 * @author Administrator
 * 
 */
public class ExtensionMgr
{
	private static final String MY_EXTENSION_POINT_ID = "PluginMgrCenter.sayHello";
	
	private static ExtensionMgr extensionMgr = new ExtensionMgr();
	
	public static final ExtensionMgr getExtensionMgr()
	{
		return extensionMgr;
	}
	
	private boolean flag = false;
	
	public void execute()
	{
		if (!flag)
		{
			try
			{
				Thread.sleep(10000);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
			
			IExtensionRegistry registry = Platform.getExtensionRegistry();
			evaluate(registry);
			flag = true;
		}
		
	}
	
	private void evaluate(IExtensionRegistry registry)
	{
		
		IConfigurationElement[] config = registry
				.getConfigurationElementsFor(MY_EXTENSION_POINT_ID);
		for (IConfigurat
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值