Blueprint 使用手记
1 概述
Blueprint 使用手记 Jet Geng
July 10, 2011
Blueprint 是 OSGi Service Platform Enterprise Specification 标准的一 部分。很多最佳实践中也都推荐在应用程序中使用他。最近在项目中用他 来发布和应用服务。感觉效果不错。所以就有了这篇使用手记!欢迎各位 看官拍砖!
2 配置环境
我们在前期找到了两个 Blueprint 的实现:一个是 Apache 的 aries,另 外一个就是 Eclipse 的 Gemini。最后选择了 Gemini。做出这样的决定出于 两点考虑:
• Blueprint的标准就是由Spring提出。
• Gemini的初始代码由Srping所捐献。 下面我就简单介绍一下环境的配置过程:
• 从http://eclipse.org/gemini/ 下载 Gemini 的合适的版本。我们 采用的是 1.0.0M1。并解压到路径 A
• 从http://static.springsource.org/downloads/nightly/milestone-download. php下载 spring-osgi-2.0.0.M1-with-dependencies。并解压到路径 B。 他里面包括了 Gemini 所依赖的 bundle。说白了也就是 SpringFrame- work。
• Eclipse 中新建一个 Target Platform。把上述的路径 A和 B 加入到新 建的 Target Platform 中去。
• 选择新建的 Target Platform 为当前活动的 Platform。 3 启航
个人理解 Gemini 就是 OSGi 世界中的 IOC。既然是一个 IOC 框架,那 我们就从创建一个 Bean 开始吧!
3.1 创建一个 Bean 首先我们来看一下我们要存入 Container 中的 POJO。
Listing 1: POJOWillInContainer.java
这个超级简单的一个 POJO,我们如何通过 Gemini 来创建他呢?我们通过 一个简单的配置文件。具体如下。
Listing 2: pojoconfig.xml
用过 spring 的兄弟,第一眼就能看明白这个配置文件说的是什么。其实就 是创建了一个 bean。到这里,我们所需要做的工作其实就已经完成了。下 面就可以通过 Debug 来启动了。
3.2 运行 Blueprint 容器 首先把 pojoconfig.xml 文件放到 project path/OSGi INF/blueprint 目录
下。或者在 MANiFEST.MF 文件中通过如下语句进行指定。 Blueprint-Bundle: config/account-data-context.xml, config/osgi-*.xml
更多内容参考http://www.eclipse.org/gemini/blueprint/documentation/ reference/1.0.0.RC1/html/app-deploy.html中的 8.2 Blueprint Manifest Configuration Comparison。好了,我们可以启动我们的应用程序了。为了 能够让 blueprint 顺利的跑起来,我们必须要把 blueprint 相关 bundle 以及 他所依赖的 bundle 都加入到运行时中。 按照上图配置后,点击运行。我们
Figure 1: Debug 配置
将在控制台得到如下内容。
控制台中的黑色行显示我们的 POJO 已经被 BlueprintContainer 创建
了,并且设定了相关属性。
.
这个部分的全部代码已经放到了 git://github.com/jetgeng/OSGi.git 中了。 感兴趣的筒子可以 down 下来玩玩。
Blueprint 使用手记 Jet Geng
July 10, 2011
Blueprint 是 OSGi Service Platform Enterprise Specification 标准的一 部分。很多最佳实践中也都推荐在应用程序中使用他。最近在项目中用他 来发布和应用服务。感觉效果不错。所以就有了这篇使用手记!欢迎各位 看官拍砖!
2 配置环境
我们在前期找到了两个 Blueprint 的实现:一个是 Apache 的 aries,另 外一个就是 Eclipse 的 Gemini。最后选择了 Gemini。做出这样的决定出于 两点考虑:
• Blueprint的标准就是由Spring提出。
• Gemini的初始代码由Srping所捐献。 下面我就简单介绍一下环境的配置过程:
• 从http://eclipse.org/gemini/ 下载 Gemini 的合适的版本。我们 采用的是 1.0.0M1。并解压到路径 A
• 从http://static.springsource.org/downloads/nightly/milestone-download. php下载 spring-osgi-2.0.0.M1-with-dependencies。并解压到路径 B。 他里面包括了 Gemini 所依赖的 bundle。说白了也就是 SpringFrame- work。
• Eclipse 中新建一个 Target Platform。把上述的路径 A和 B 加入到新 建的 Target Platform 中去。
• 选择新建的 Target Platform 为当前活动的 Platform。 3 启航
个人理解 Gemini 就是 OSGi 世界中的 IOC。既然是一个 IOC 框架,那 我们就从创建一个 Bean 开始吧!
3.1 创建一个 Bean 首先我们来看一下我们要存入 Container 中的 POJO。
Listing 1: POJOWillInContainer.java
package
org.gunn.gemini.demo;
import org.slf4j.Logger; import org.slf4j.LoggerFactory; /**
* This pojo will create by blueprint container * @author Jet Geng * */
public class POJOWillInContainer { private Logger logger =
}
LoggerFactory.getLogger(POJOWillInContainer. class ); private String name ;
private String age;
public void setName(String name) { logger.info( " the new name is: " + name); this .name = name;
}
public void setAge(String age) { logger.info( " the new age value is: " + age); this .age = age;
}
import org.slf4j.Logger; import org.slf4j.LoggerFactory; /**
* This pojo will create by blueprint container * @author Jet Geng * */
public class POJOWillInContainer { private Logger logger =
}
LoggerFactory.getLogger(POJOWillInContainer. class ); private String name ;
private String age;
public void setName(String name) { logger.info( " the new name is: " + name); this .name = name;
}
public void setAge(String age) { logger.info( " the new age value is: " + age); this .age = age;
}
这个超级简单的一个 POJO,我们如何通过 Gemini 来创建他呢?我们通过 一个简单的配置文件。具体如下。
Listing 2: pojoconfig.xml
<?
xml version="1.0" encoding="UTF-8"
?>
< blueprint xmlns ="http://www.osgi.org/xmlns/blueprint/v1.0.0" >
< bean id ="myPOJO" class ="org.gunn.gemini.demo.POJOWillInContainer" >
< property name ="name" value ="JetGeng" />
< property name ="age" value ="32" />
</ bean >
</ blueprint >
< blueprint xmlns ="http://www.osgi.org/xmlns/blueprint/v1.0.0" >
< bean id ="myPOJO" class ="org.gunn.gemini.demo.POJOWillInContainer" >
< property name ="name" value ="JetGeng" />
< property name ="age" value ="32" />
</ bean >
</ blueprint >
用过 spring 的兄弟,第一眼就能看明白这个配置文件说的是什么。其实就 是创建了一个 bean。到这里,我们所需要做的工作其实就已经完成了。下 面就可以通过 Debug 来启动了。
3.2 运行 Blueprint 容器 首先把 pojoconfig.xml 文件放到 project path/OSGi INF/blueprint 目录
下。或者在 MANiFEST.MF 文件中通过如下语句进行指定。 Blueprint-Bundle: config/account-data-context.xml, config/osgi-*.xml
更多内容参考http://www.eclipse.org/gemini/blueprint/documentation/ reference/1.0.0.RC1/html/app-deploy.html中的 8.2 Blueprint Manifest Configuration Comparison。好了,我们可以启动我们的应用程序了。为了 能够让 blueprint 顺利的跑起来,我们必须要把 blueprint 相关 bundle 以及 他所依赖的 bundle 都加入到运行时中。 按照上图配置后,点击运行。我们
Figure 1: Debug 配置
将在控制台得到如下内容。
控制台中的黑色行显示我们的 POJO 已经被 BlueprintContainer 创建
了,并且设定了相关属性。
.
这个部分的全部代码已经放到了 git://github.com/jetgeng/OSGi.git 中了。 感兴趣的筒子可以 down 下来玩玩。