Example #1
0
 /// <summary>
 /// 关闭矿建,销毁框架实例
 /// </summary>
 public void Close()
 {
     if (adaptor == null)
     {
         return;
     }
     if (active)
     {
         Shutdown();
     }
     lock (bundles)
     {
         IList allBundles = bundles.GetBundles();
         int   size       = allBundles.Count;
         for (int i = 0; i < size; i++)
         {
             AbstractBundle bundle = (AbstractBundle)allBundles[i];
             bundle.Close();
         }
         bundles.RemoveAllBundles();
     }
     serviceRegistry = null;
     adaptor         = null;
     assemblyResolver.Stop();
     assemblyResolver = null;
 }
Example #2
0
 /// <summary>
 /// 初始化插件框架
 /// </summary>
 /// <param name="adaptor"></param>
 internal void Initialize(IFrameworkAdaptor adaptor)
 {
     this.adaptor = adaptor;
     active       = false;
     /* 初始化适配器 */
     adaptor.Initialize();
     try
     {
         adaptor.InitializeStorage();
     }
     catch (Exception e)
     {
         throw new Exception(e.Message, e);
     }
     /* 初始化框架属性 */
     InitializeProperties(adaptor.Properties);
     /* 初始化包管理器 */
     packageAdmin = new PackageAdminImpl(this);
     /* 初始化扩展管理器 */
     extensionAdmin = new ExtensionAdmin(this);
     /* 初始化程序集解析器 */
     assemblyResolver = new AssemblyResolvingImpl(this);
     /* 初始化启动级别管理器 */
     startLevelManager = new StartLevelManager(this);
     /* 创建服务注册中心 */
     serviceRegistry = new ServiceRegistry(this);
     /* 创建系统插件 */
     this.CreateSystemBundle();
     /* 为安装的插件创建插件对象. */
     IBundleData[] bundleDatas = adaptor.InstalledBundles.ToArray();
     bundles = new BundleRepository(this);
     /* 添加系统插件到插件仓库 */
     bundles.Add(systemBundle);
     if (bundleDatas != null)
     {
         for (int i = 0; i < bundleDatas.Length; i++)
         {
             try
             {
                 AbstractBundle bundle = AbstractBundle.CreateBundle(bundleDatas[i], this, true);
                 bundles.Add(bundle);
             }
             catch (BundleException be)
             {
                 Log.Debug(be);
                 // This is not a fatal error. Publish the framework event.
                 //publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, be);
             }
         }
     }
 }
 public AssemblyResolvingProvider(IFrameworkAdaptor frameworkAdaptor, IFramework framework)
 {
     this.Framework        = framework;
     this.FrameworkAdaptor = frameworkAdaptor;
     this.OSGiAssembly     = base.GetType().Assembly;
     this.OSGiAssemblyName = this.OSGiAssembly.GetName();
     try
     {
         this.OSGiWebExtensionAssembly = Assembly.Load("UIShell.OSGi.WebExtension");
         if (this.OSGiWebExtensionAssembly != null)
         {
             this.OSGiWebExtensionAssemblyName = this.OSGiWebExtensionAssembly.GetName();
         }
     }
     catch
     {
     }
     this.Cache    = new Dictionary <string, AssemblyEntry>();
     this.Resolver = frameworkAdaptor.State.Resolver;
     this.Resolver.BundleUnresolved += new EventHandler <BundleMetadataEventArgs>(Resolver_BundleUnresolved);
 }
Example #4
0
        ///// <summary>
        ///// 创建插件启动器
        ///// </summary>
        ///// <returns></returns>
        //public static BundleStarter CreateStarter()
        //{
        //    lock (lockObj)
        //    {
        //        if (instance == null)
        //            instance = new BundleStarter();
        //        return instance;
        //    }
        //}

        /// <summary>
        /// 启动插件框架
        /// </summary>
        public void Start()
        {
            // 检查插件启动器是否已启动
            if (running)
            {
                throw new IllegalStateException("Bundle Framework has started.");
            }
            // 初始化适配器
            adaptor = CreateAdaptor();
            // 初始化框架
            framework = new Core.Framework(adaptor);
            // 初始化上下文
            context = framework.GetBundle(0).BundleContext;
            // 启动框架
            framework.Launch();
            // 加载插件
            IBundle[] startBundles = LoadBasicBundles();
            // 设置当前框架的启动级别
            SetStartLevel(GetStartLevel());
            // 确认所有启动的插件是否已激活
            //EnsureBundlesActive(startBundles);
            // 设置当前启动器已启动
            running = true;
        }
Example #5
0
 internal Framework(IFrameworkAdaptor adaptor)
 {
     this.Initialize(adaptor);
 }