初探OSGi Web应用开发利器Equinox:环境设置

原创
开发 后端
本文介绍了服务器端Equinox的设置步骤。如果你喜欢OSGi这个概念,但对于如何用它来开发Web应用还无从入手,那么推荐从本文看起,学习Equinox的使用方法。

【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 212008 12:28:06 PM org.mortbay.http.HttpServer doStart  
  2. INFO: Version Jetty/5.1.x  
  3. May 212008 12:28:07 PM org.mortbay.util.Container start  
  4. INFO: Started org.mortbay.jetty.servlet.ServletHandler@f47bf5 
  5. May 212008 12:28:07 PM org.mortbay.util.Container start  
  6. INFO: Started HttpContext[/,/]  
  7. May 212008 12:28:07 PM org.mortbay.http.SocketListener start  
  8. INFO: Started SocketListener on 0.0.0.0:80 
  9. May 212008 12:28:07 PM org.mortbay.util.Container start  
  10. INFO: Started org.mortbay.http.HttpServer@1f6df4

一直得到你看到 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 应用程序。敬请关注!

【编辑推荐】

  1. 你好,OSGi!OSGi入门必读系列
  2. 使用OSGi构建面向服务的联络管理应用程序
  3. OSGi与Spring:设置Spring DM开发环境
  4. OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
  5. OSGi是什么:Java语言的动态模块系统
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2009-06-01 11:28:48

EquinoxOSGi入门

2009-03-03 10:06:00

IBMJavaOSGi

2009-06-01 11:37:46

EquinoxOSGi服务器

2009-06-18 10:03:57

EquinoxOSGi应用服务器

2009-09-28 13:13:16

设置Spring DM

2009-06-05 11:14:15

Web程序生命周期OSGi Web容器

2010-04-07 08:55:00

OSGiSpring

2020-01-06 11:50:25

LinuxEquinox桌面

2010-08-10 09:08:29

WebSocketsHTML 5

2009-03-02 09:22:39

OSGiJ2EEEclipse

2021-08-30 10:19:05

PyFlink 开发环境Zeppelin No

2013-03-06 16:06:31

2011-04-01 09:11:14

Python

2009-10-22 11:03:20

OSGi Web应用程

2011-08-23 17:52:39

LUAWeb 开发

2009-10-19 14:14:19

OSGi Web应用

2011-03-15 10:32:05

2012-06-25 11:47:14

ibmdw

2012-06-14 10:14:46

ibmdw

2021-09-26 08:45:09

C++Web前端
点赞
收藏

51CTO技术栈公众号