【51CTO精选译文】本文是《你好,OSGi》系列的第七部分。现在读者们多半已经了解了何谓Spring DM,它和OSGi的关系,以及Spring DM开发环境的设置,那么下面将要开始进行应用程序的开发了。
51CTO编辑推荐:OSGi入门与实践全攻略
欢迎来到 Spring 世界!
在这一部分,我们将使用 Spring DM来创建一个简单的 Hello World 应用程序。这个非常简单的应用程序将在启动时在你的控制台上输出“Hello Spring World!!”,并且在关闭时输出“Goodbye Spring World!!”。***步是创建一个简单的 HelloWorld.java 类,请参见以下代码:
代码清单1. HelloWorld.java
- package com.javaworld.osgi.spring;
- public class HelloWorld {
- public void start() throws Exception {
- System.out.println("Hello Spring World!! " );
- }
- public void stop() throws Exception {
- System.out.println("Goodbye Spring World!!");
- }
- }
正如你所见,HelloWorld.java 是一个简单的类,它没有实施任何借口或者扩展任何超类(superclass)。它包含两个方法:start() 和 stop()。在应用程序启动时调用 start() 方法;关闭时调用stop()方法。
下一步是在 META-INF/spring 文件夹中创建一个helloworld.xml 文件:
代码清单 2. helloworld.xml
- < ?xml version="1.0" encoding="UTF-8"?>
- < beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- < bean name="hello" class="com.javaworld.osgi.spring.HelloWorld"
- init-method="start" destroy-method="stop" />
- < /beans>
在该文件中,只声明了一个名为hello 的 bean,指向com.javaworld.osgi.spring.HelloWorld 类。该 bean 的 init-method 值为 start。destroy-method 属性的值为stop。
当将你的应用程序zuowei Eclipse OSGi 应用程序执行时,应可以在你的控制台上看到“Hello Spring World!!”这条消息。怎么会这么简单?是对,当你创建 META-INF/spring 文件夹并保护你的 helloworld.xml 文件时,已经对其进行了设置。
当 extender 套件启动时,它会发现你的 HelloWorld 套件是由 Spring 提供的。hello bean 已经将 start() 定义为它的初始化方法,因此 Spring 框架将调用 HelloWorld 类的 start() 方法。同样,当你关闭 HelloWorld 套件时,Spring 框架将调用 HelloWorld.java 的 stop() 方法。
Spring DM中面向服务的应用程序
OSGi 在面向服务应用程序开发方面的适用性是其最让人关注的功能之一。OSGi服务平台运行 OSGi服务构建的、面向服务的应用程序。这一服务只是一个简单的Java 对象,在一个或多个接口名称下发布。OSGi 服务平台的构思是一个源(source)套件在一个公共的寄存器导出服务。然后消费者(consumer)搜索实施了某一特定接口的服务;一旦找到就将其与该服务绑定并使用它。
在构建复杂的企业应用程序时,OSGi服务平台非常有用。例如,假设我们要创建一个 Web 应用程序,那么在 OSGi 实施中,你可以将该应用程序分为两个套件。数据访问套件可与数据库互动并将数据访问服务导出至一个公共寄存器。Web 层套件将导入数据访问服务并使用它们将数据显示给终端用户。
这种基于模块化架构进行应用程序创建的设计让数据访问服务的更新变得非常容易。比如,要从一个较慢的服务更新到一个较快的服务,你可以创建一个不同的数据访问服务,来和 Web 服务实现进行会话,然后将 RDMBS 服务替换为这一新的服务,而且无需重启你的应用程序。
在下一个部分我们将构建一个面向服务的联络管理应用程序。该应用程序将演示 Spring bean 如何能够被导出为 OSGi服务,以及 OSGi服务如何导出为 Spring bean。
【编辑推荐】