- 浏览: 1650281 次
- 性别:
文章分类
- 全部博客 (2929)
- 非技术 (18)
- Eclipse (11)
- JAVA (31)
- 正则表达式 (0)
- J2EE (4)
- DOS命令 (2)
- WEB前端 (52)
- JavaScript (69)
- 数据库 (8)
- 设计模式 (0)
- JFreechart (1)
- 操作系统 (1)
- 互联网 (10)
- EasyMock (1)
- jQuery (5)
- Struts2 (12)
- Spring (24)
- 浏览器 (16)
- OGNL (1)
- WebService (12)
- OSGi (14)
- 软件 (10)
- Tomcat (2)
- Ext (3)
- SiteMesh (2)
- 开源软件 (2)
- Hibernate (2)
- Quartz (6)
- iBatis (2)
最新评论
【51CTO精选译文】在之前的《你好,OSGi》系列 中, 我们理解 OSGi服务平台的工作原理奠定了基础。在接下来的最后这几篇中,我们将学习如何将 OSGi 可插入、基于组件的开发模型应用到 Web 应用程序。您将创建一个基于套件(bundle)的OSGi应用程序,用它可以为静态资源、servlet 或 JSP 提供服务器端服务。此外,你还可以学到一些实际的经验:在 Web 应用程序中,使用 Equinox框架简便地利用 OSGi的模块化、版本管理和动态服务。
51CTO编辑推荐: OSGi入门与实践全攻略
该系列已经介绍了 OSGi 开发概念并演示如何使用 Equinox 创建简单的 Hello World 应用,Eclipse 的 OSGi 容器和实现。另外还已经介绍了 Spring DM(Spring动态模型),用它可以非常方便地创建 Spring 应用程序,并将其部署在 OSGi 容器中。
在最后一节,我们将解答许多开发人员现在要问的问题:我喜欢 OSGi 这个概念,但如何用它来创建 Web 应用程序呢?
在本节中,你将看到,OSGi 的开发模式极大地简化了编写真正可插入、模块化和组件化的服务端应用程序的流程。开发练习将基于 OSGi 引用实施 Equinox 之上(在这个系列文章都是如此)。不过,这次我们将在服务器端使用 Equinox(参考阅读:Equinox入门 )。开 始时,我们将讨论部署 OSGi Web 应用程序的选项序(本例中为 Jetty 或 Tomcat ),之后是一个简短的指南,配置 Web 应用程序开发环境。然后,我们将开发一个简单的 Hello World OSGi Web 应用程序并使用不同的方式对其进行部署。
使用服务器端Equinox 进行应用程序开发
使用服务器端Equinox 开发 OSGi Web 应用程序有两种方法:你可以将轻量级的 servlet 容器(如 Jetty)嵌入到 OSGi 容器中,或者将 OSGi 容器嵌入到 Web 应用程序中,然后在 servlet 容器(如 Apache Tomcat)中部署该程序。
现在,好消息是:无论选择何种方式,开发 OSGi Web 应用程序的流程是相同的。因此,最好是在开发过程中将 servlet 容器嵌入到你的 OSGi 容器;一旦应用程序就绪,你就可以对其重启打包(re-package)并进行部署。马上你就可以学习如何将 servlet 容器嵌入到你的 OSGi 容器。但第一步,我们需要设置开发环境。
有关Equinox:Equinox 崛起
服务器端Equinox项目正在快速发展。存在这样一个趋势:增加对流行的 MVC 框架(如 Apache Struts)和 Spring Web 框架的支持,还有对于普及的对象-关系映射工具(如 Hibernate)的支持。富 Ajax 平台是另一个 Eclipse 项目,它允许你使用具有服务器端 Equinox 的 Ajax 应用程序。
设置开发环境
在本节的应用程序开发练习中,我们会将一个轻量级 servlet 容器嵌入到 OSGi 套件(或插件,即 Eclipse 语境下的 plug-in)。一旦这个插件安装到 OSGi 容器,它将监听 HTTP 请求。接收到一个请求时,它将查看任何已安装的插件是否能够对请求进行处理,如果是,那么它会将控制转发给相应的插件来生成一个响应。一旦生成响 应,OSGi 容器会将其转发至客户。
服务器端 Equinox 通过提供几个预制的插件(将 servlet 容器嵌入到 OSGi 插件)来简化基于 OSGi 的 Web 应用程序开发。以下插件都包含了一个嵌入的 servlet 容器:
org.eclipse.equinox.http:运行占用空间(footprint)非常小的插件,适合于资源有限的环境。
org.eclipse.equinox.http.jetty:使用 Jetty 作为底层引擎来提供对 Servlet API 2.4 的支持。
在本小节中,我们通过将 Jetty 插件嵌入到 Eclipse IDE 来配置 OSGi Web 应用程序开发环境。(如果您的 IDE 尚未启动,应先启动它)。
1. 将 jettyhttp-anon.psf 下载到你的计算机。
2. 右击 Package Explorer 然后选择 Import > Team > Team Project Set,然后单击下一步(Next)。
3. 在 Import a Team Project Set(导入团队项目设置)对话框中,单击 Browse 并选择你下载到本地的 jettyhttp-anon.psf 文件,如图 1 所示。
图 1. 导入插件
单击 Finish 启动导入流程。这个步骤可能需要几分钟,要看你的互联网连接速度,因为 Eclipse 将从 dev.eclipse.org CVS 库下载必需的项目文件。
4. 一旦导入完成,你应该可以看到一些套件已导入到你的工作空间中:
1. javax.servlet v2_4
2. org.apache.commons.logging v1_0_4
3. org.eclipse.equinox.http.jetty
4. org.eclipse.equinox.http.registry
5. org.eclipse.equinox.http.servlet
6. org.mortbay.jetty v5_1_11
你的开发环境已准备就绪。下一步是在 Equinox OSGi 框架中执行你的套件。如果忘记如何操作,请查阅本系列的第一节。
验证你的设置
如果你已经在 Equinox OSGi 框架中执行套件,你将会在控制台视图中看到 OSGi> 提示符。你应能够在 OSGi 控制台中看到 Jetty servlet 容器生成的信息,这些信息类似下面的列表 1。
列表 1. OSGi 控制台中的 Jetty 信息
1. osgi> May 21, 2008 12:28:06 PM org.mortbay.http.HttpServer doStart
2. INFO: Version Jetty/5.1.x
3. May 21, 2008 12:28:07 PM org.mortbay.util.Container start
4. INFO: Started org.mortbay.jetty.servlet.ServletHandler@f47bf5
5. May 21, 2008 12:28:07 PM org.mortbay.util.Container start
6. INFO: Started HttpContext[/,/]
7. May 21, 2008 12:28:07 PM org.mortbay.http.SocketListener start
8. INFO: Started SocketListener on 0.0.0.0:80
9. May 21, 2008 12:28:07 PM org.mortbay.util.Container start
10. INFO: Started org.mortbay.http.HttpServer@1f6df4c
一直得到你看到 INFO: Started org.mortbay.http.HttpServer@1f6df4c 之后,再进行下一步操作。
在浏览器中输入 http://localhost/
来验证
你可以分为 Jetty服务器。你应能够看到错误页面,其信息如列表 2 所示。
列表 2. Jetty 错误信息
1. HTTP ERROR: 404
2. ProxyServlet: /
3. RequestURI=/
4. Powered by Jetty://
由于 Jetty 无法找到请求的资源,所有你会接收到 404 错误信息。如果无法找到已寄存的插件来处理当前请求,Jetty OSGi 插件在服务器端不提供任何默认的 index 页面;作为替代,它将抛出这个 404 错误页面。
如果你的设置能够与我的讲述匹配,那么在下一篇文章中你就可以开始第一个练习:使用服务器端Equinox 开发基于 OSGi Web 应用程序。敬请关注!
发表评论
-
OSGi是什么:Java语言的动态模块系统
2010-05-31 14:19 642之前51CTO曾发过一篇文章叫做《OSGi为什么重要:向模块化 ... -
OSGi Bundle之Hello World
2010-05-31 14:20 691本文是《你 好,OSGi 》系列的第二部分。之前曾介绍过O ... -
OSGi依赖性管理:Bundle访问域
2010-05-31 16:12 683本文是《你 好,OSGi 》系列的第三部分。之前介绍过OS ... -
OSGi服务:非常适合SOA的架构
2010-05-31 16:35 760本文是《你 好,OSGi 》系列的第四部分。下面讲述OSG ... -
OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
2010-05-31 17:46 1028【51CTO精选译文】本文 ... -
OSGi与Spring:设置Spring DM开发环境
2010-06-01 09:46 627【51CTO精选译文】本文 ... -
使用Spring DM创建Hello World,以及OSGi服务
2010-06-01 13:24 765【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
使用OSGi构建面向服务的联络管理应用程序
2010-06-01 14:44 719【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
OSGi与Spring DM:使用Spring DataSource
2010-06-07 12:53 647【51CTO精选译文】本文是《你好,OSGi 》系列的第 ... -
打造一个Hello World OSGi Web应用程序
2010-06-07 12:59 563【51CTO精选译文】在《你好,OSGi 》的之前一篇文章 ... -
部署并运行你的OSGi Web应用程序
2010-06-07 13:02 436【51CTO精选译文】本文 ... -
打造一个基于OSGi的Web Application
2010-06-12 09:51 1188动机和目标 OSGi技术 ... -
OSGi中获取Service的几种方式
2010-06-12 10:01 751在OSGi中,Service是动态管理的,OSGi容器提供 ...
相关推荐
**使用Equinox开发OSGI应用程序工程及源码详解** OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许在运行时动态发现、安装、卸载和更新软件模块。Equinox是Eclipse基金会提供的一个...
在基于 OSGi 和 Spring 的 Web 应用开发中,我们可以使用 Spring-DM 来实现模块化部署和管理。Spring-DM 是 Spring 开发组织在 2008 年发布的,将 OSGi 和 Spring 结合的第一个版本。dm Server 是一个完全模块化部署...
例如,Eclipse IDE就是基于OSGi框架构建的,它允许开发者动态地添加、卸载插件而不需要重启整个开发环境。在企业应用中,OSGi可以用来构建服务网关或者中间件,以支持微服务架构。 由于OSGi提供了一个严格的模块化...
### Equinox开发OSGi应用程序 #### OSGi及框架简介 **OSGi**(Open Service Gateway Initiative)是一种用于创建模块化Java应用程序和服务的框架。它最初是为了满足嵌入式设备和家庭网关的需求而设计的,但随着...
### 开发一个简单的 OSGi Web 应用实例 #### 一、项目概述 本教程旨在通过一个具体的示例来介绍如何使用OSGi框架开发一个简单的Web应用。这个示例应用能够计算两个数字的和或乘积,并展示了OSGi bundle的动态部署...
本资源包括两部分:《深入理解OSGi:Equinox原理、应用与最佳实践》的源代码和equinox-SDK-3.8的源代码。 深入理解OSGi这本书提供了对OSGi,特别是Equinox实现的全面洞察。书中可能涵盖以下几个知识点: 1. **OSGi...
3. **Equinox**:Equinox 是 Eclipse 项目中的 OSGi 容器,它是 RCP 应用程序的基础,负责加载、管理和控制 OSGi 模块(称为“bundle”)的生命周期。 4. **模块化开发**:在 OSGi 中,每个组件(bundle)都是一个...
在基于OSGi和Spring开发Web应用的过程中,首先需要指定Target Platform到所有需要用到的bundle包目录中,这是为了确保开发环境能够识别并正确加载所有必要的组件。接下来,创建一个服务接口bundle,定义接口类及其...
Web示例工程是使用OSGi技术构建的一个具体应用,通常包括了如何在OSGi环境中部署和运行Web应用程序的实例。 在OSGi框架中,Equinox是Eclipse基金会提供的一个实现,它是OSGi规范的主要实现之一,广泛应用于服务器端...
由于IBM的强力支持,Equinox不仅具有良好的文档和社区资源,也成为开发者进行OSGi应用开发的首选框架。 【OSGi应用开发】 开发OSGi应用程序通常包括以下几个步骤: 1. **环境准备**:确保拥有一个支持OSGi R4的...
为了开发这个应用,首先需要准备开发环境,包括Eclipse 3.4以及OSGi、Equinox和Spring的相关插件。然后,需要设置目标平台(target platform)为这些插件的集合。应用的模块设计分为服务层和Web层。服务层负责实际的...
本示例以“基于OSGI的Web开发例子”为主题,主要介绍了如何利用Equinox框架在OSGi环境中进行Web应用的开发,通过一个简单的“Hello World”项目来展示其工作原理。 首先,我们需要理解Equinox。Equinox是Eclipse...
【标题】基于Eclipse的Equinox框架开发OSGi Bundle应用 在Java世界中,OSGi(Open Services Gateway Initiative)是一种模块化系统,它允许开发者创建可独立更新和依赖管理的模块,即Bundle。Eclipse的Equinox是...
本文将介绍 Equinox 的 ServletBridge 项目,提供一个示例来说明如何使用 ... 前一种:和普通的 OSGI bundle 开发差不多,而后一种:Equinox 提供 servletBridge 来将 OSGI framework 和 Servelet Container 联系起来。
1、自己开发的OSGi Web Console,适用于实现了OSGi规范的Equinox、Felix等开源框架,可在web界面上启动、停止OSGi Framework,启动、停止、装载、卸载bundles。当切换成其他OSGi开源框架时,只需在把lib下面的jar...
### 深入理解OSGi:Equinox原理、应用与最佳实践 #### OSGi概述 OSGi(Open Service Gateway Initiative)是一种模块化系统和服务组件模型,它为Java平台提供了一种动态部署、管理和更新应用程序和服务的方法。...
为了在OSGi环境中有效地开发,通常会使用一些工具,如Maven进行依赖管理和构建,Pax-construct和Pax-runner辅助构建OSGi应用,以及Eclipse作为IDE进行开发。Maven的使用可以简化项目结构、依赖管理和构建过程,但...