quinox OSGI ServletBridge 原理与实践 E
本文将介绍 Equinox 的 ServletBridge 项目,提供一个示例来说明如何使用
ServletBridge,并将简要分析 它的实现方法。
读者将首先了解到如何在 Servlet Container 中嵌入 OSGI,并从文章提供的例子中了了解
其工作原理, 并提供一个简单的示例。通过学习了解 Servlet Container 中嵌入 OSGI, 我
们也可以将这种技术用到其它的已有的系统中来部署 OSGI 应用。 OSGI 在 J2EE 环境下
的应用越来越广泛,目前在 Servlet 应用中使用 OSGI 有两种方式:Servlet Container in
OSGI 和 OSGI in Servlet Container. 前一种:和普通的 OSGI bundle 开发差不多,而后
一种:Equinox 提供 servletBridge 来将 OSGI framework 和 Servelet Container 联系起来。
Equinox 项目
Equinox 项目包括 OSGi R4 版本规范核心框架的实现,一系列 OSGi 标准服务 Bundle 及
运行基于 OSGi 的系统的一些基础构件。 用户可以直接访问该项目在 Eclipse 的网址
Equinox 获取概括性的信息。 目前,关于 Equinox 的进展大部分资料及项目进展存在于
Eclipse Wiki 上。 可以通过 equinox 官方网站 得到这些相关信息。
OSGi 作为应用服务器的基础架构已经成为现实。Equinox 提供了一组基础的 Bundle, 使
得使用 JSP、Servlet 和 Struts 等 J2EE 技术的 Web 应用项目可以运行于 Equinox OSGi
环境中。 同样的,Equinox 通过一组 Bundle,可以将 Equinox OSGi 应用嵌入到现有的
Web 服务器(如 Tomcat,Jetty 等)和 应用服务器(如 Websphere,Weblogic 等)中。
下面是 Equinox 在 J2EE 应用方面的几个项目:
org.eclipse.equinox.servletbridge (Servlet Bridge)
该 Bundle 会启动 OSGI,使得 Equinox 可以嵌入到现有的 servlet 容器中运行,
通过提供一个供 Hook 注册的功能,使 OSGI 框架可以能够处理容器接受的 HTTP
请求。
org.eclipse.equinox.http.servletbridge (HTTP ServletBridge)
注册到 Servlet Bridge 中以作为 Hook,将 servlet 容器中的 HTTP 请求转发到
OSGI 的 HTTPService 来最终完成 HTTP 请求的处理。 以上两个 bundle 是将应
用服务器作为 bundle 集成进入 OSGi 大环境的关键。
org.eclipse.equinox.http.servlet (HTTP Servlet)
该 Bundle 为在 Equinox 中发布其他 servlet 处理引擎(如传统的应用服务器)为
OSGi HTTP 服务提供支持 。
上面三个 project 是 Equniox 提供的将 OSGI 嵌入 servlet 容器所必须的。