OSGi - 第01章环境准备
来源:互联网 发布:二手软件app软件哪个好 编辑:程序博客网 时间:2024/05/16 19:11
基础要求:
具备Java的基础知识;
具备类加载机制的基础知识;
具备多线程相关基础知识;
具备Eclipse使用经验;
具备Maven的使用经验;
环境:
JDK6
OSGi5.0
Felix 4.2.1
POM文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>demo</groupId><artifactId>MiniRuntime</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.felix</groupId><artifactId>org.apache.felix.framework</artifactId><version>4.2.1</version></dependency></dependencies></project>
Felix 4.2.1的源码准备:
由于Maven中心仓库没有放置Felix4.2.1的源码,所以需要到apache的档案站点下载,下载地址:
下载后,将源码取出,创建一个新的org.apache.felix.framework-4.2.1-sources.jar文件,和felix jar文件放置到同一个目录下,就可以查看源码了。
最简化的启动程序:
package demo;import java.io.File;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import org.osgi.framework.Bundle;import org.osgi.framework.BundleEvent;import org.osgi.framework.FrameworkEvent;import org.osgi.framework.FrameworkListener;import org.osgi.framework.SynchronousBundleListener;import org.osgi.framework.launch.Framework;import org.osgi.framework.launch.FrameworkFactory;public class Demo {public static void main(String[] args) throws Exception {Map<String, String> properties = new HashMap<String, String>();FrameworkFactory factory = new org.apache.felix.framework.FrameworkFactory();Framework framework = factory.newFramework(properties);framework.init();framework.getBundleContext().addBundleListener(new SynchronousBundleListener() {@Overridepublic void bundleChanged(BundleEvent event) {System.out.println("type=" + event.getType() + ", " + event);if (event.getType() == BundleEvent.INSTALLED) {throw new Error("eeeeeeeeeeee");}}});final List<FrameworkEvent> errors = new ArrayList<FrameworkEvent>();framework.getBundleContext().addFrameworkListener(new FrameworkListener() {@Overridepublic void frameworkEvent(FrameworkEvent event) {if (event.getType() == FrameworkEvent.ERROR) {errors.add(event);if (event.getThrowable() instanceof Error) {System.out.println("error: " + event);//System.exit(1);}}}});File[] files = new File("bundles").listFiles();if (files != null) {List<File> installingFiles = Arrays.asList(files);Collections.sort(installingFiles);for (File file : installingFiles) {Bundle bundle = framework.getBundleContext().installBundle(file.toURI().toURL().toString());bundle.start();}}framework.start();}}
我们观察到,程序第一次启动,在控制台打印出了几条错误信息以及错误堆栈。
把程序关闭,再次启动,这时候错误信息没有了。
我们稍后再来解释这个现象。
OSGi MiniRuntime示例环境
Felix4.2.1源码
0 0
- OSGi - 第01章环境准备
- 第1.1章 django mysql环境准备
- jeestite第一天--环境准备
- 第1.2章 自动化测试之linux环境准备
- [QT起航] 第一篇:环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- [OSGI]OSGi开发环境搭建
- OSGi - 第02章 Felix线程
- 第2章 准备——2.1. 准备的准备
- 《白话C++》第2章 准备 2.1 准备的准备
- OSGi规范中文版(第5版 core R6.0.0)-第1章OSGi概述[译]
- OSGi环境调试心得
- OSGI Equinox 环境搭建
- osgi环境配置出错
- 数字图像处理(1)- 透视变换
- uclinux很久前笔记11
- JsBridge最详细的解析,高版本webview的evaluateJavascript
- A100 正确使用递归和灵活使用if
- Hdu 5193 Go to movies Ⅱ(带删除数插入数的逆序数对,块状链表)
- OSGi - 第01章环境准备
- LibGdx文档译读(十三) AssetManager类
- python中__init__.py文件的作用
- Linux安装apue.3e(基于ubuntu12.0.4+centos6.8)
- uclinux很久前笔记12
- Linux操作命令符(基本)
- 18 UI美化自定义形状shape
- 洛谷 P1118 [USACO06FEB] 数字三角形Backward Digit Su…
- booking各地联系方式