基于OSGi的Web模块开发基本流程

本文提供了一步一步的指南,演示如何在Eclipse中使用OSGi框架创建一个基本的Web模块,包括生成项目、配置运行环境、编码实现及运行Web服务等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

由于项目的需要,写了一个简单的开发基于OSGi的Web模块开发示例用于项目组交流,最初发布在自己的个人博客上(http://www.tofacto.org/2012/02/189.html),在优快云上同时发布出来期望能够抛砖引玉,或者能给大家带来一点启发。

一、生成项目:

1、 Eclipse菜单:File -> new -> project -> Plug-in Project,如图:1.1

生成Plug-in Project

图 1.1

2、 填写项目名称,并在“Target Platform”部分选择使用“equinox”框架,如图: 1.2

选择Target Platform

图 1.2

3、 选择“Finish”生成项目。

二、开发准备:

1、 打开“META-INF”下的文件“MANIFEST.MF”,在代码区选择“Dependencies”标签。

2、 在Dependencies中添加开发Web所需依赖的bundle,完成后如图2.1:

  • javax.servlet;bundle-version="2.5.0",
  • org.eclipse.equinox.http.jetty;bundle-version="2.0.100",
  • org.eclipse.equinox.http.registry;bundle-version="1.1.100",
  • org.eclipse.equinox.http.servlet;bundle-version="1.1.200",
  • org.eclipse.equinox.jsp.jasper;bundle-version="1.0.300",
  • org.eclipse.equinox.jsp.jasper.registry;bundle-version="1.0.200",
  • org.apache.commons.logging;bundle-version="1.0.4",
  • org.apache.commons.el;bundle-version="1.0.0" 配置Dependcies

图 2.1

3、 选择“Overview”标签,单击“Extension/Extension Point Content”中的“Extensions”,在弹出窗口中选择“Yes”以显示被隐藏的“Extensions”、“Extensions Points”和“Plugin。xml”标签。4、 在“Extensions”标签单击“Add”按钮,在弹出窗口中选择“org.eclipse.equinox.http.registry.servlets”,完成后的“Extensions”标签如图2.2,保存可打开plugin.xml如图2.3:

Extensions

图 2.2

plugin.xml

图2.3

三、 配置运行/调试环境:

1、 菜单栏选择“run”->“Run Configuration”打开运行环境配置窗口,右键单击“OSGi Framework”并在弹出菜单中选择“new”。

2、 取消所有“Target Platform”中bundle的选中,然后添加如下bundle:

  • org.eclipse.osgi_3.7.1.R37x_v20110808-1106
  • org.eclipse.osgi.services_3.3.0.v20110513
  • javax.servlet_2.5.0.v201103041518
  • javax.servlet.jsp_2.0.0.v201101211617
  • org.mortbay.jetty.util_6.1.23.v201012071420
  • org.mortbay.jetty.server_6.1.23.v201012071420
  • org.eclipse.equinox.common_3.6.0.v20110523
  • org.eclipse.equinox.http.jetty_2.0.100.v20110502
  • org.eclipse.equinox.http.servlet_1.1.200.v20110502
  • org.eclipse.equinox.http.registry_1.1.100.v20110502
  • org.eclipse.equinox.jsp.jasper.registry_1.0.200.v20100503
  • org.eclipse.equinox.jsp.jasper_1.0.300.v20110502
  • org.eclipse.equinox.registry_3.5.101.R37x_v20110810-1611
  • org.apache.jasper_5.5.17.v201101211617
  • org.apache.commons.el_1.0.0.v201101211617
  • org.apache.commons.logging_1.0.4.v201101211617

3、 此时web服务的默认端口为80,如此端口已被占用可以在配置窗口中“Arguments”标签下,在VM arguments部分填上“-Dorg.osgi.service.http.port=(端口号)”,如需在8080端口启动服务则为:-Dorg.osgi.service.http.port=8080

4、 运行此配置环境,打开浏览器,在地址栏中填入:http://localhost:(端口号)/,如浏览器报404错误,则说明配置成功。

四、 编码及运行:

1、 在src下建包,包内创建Servlet,示例代码如下:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author GAO Ming (http://www.tofacto.org)
 */

public class FirstServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/plain");
		PrintWriter out = resp.getWriter();
		out.println("Hello World!");
		out.flush();
		out.close();
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
}


 

2、 打开“MANIFEST.MF”文件,选择“Extensions”标签,编辑默认生成的Servlet映射,在class处填入刚完成的servlet的包名与类名,如:org.tofacto.demo.web.FirstServlet,在alias处填写欲映射的url位置,如:/first3、 保存后运行在第三部分配置的运行环境,然后打开浏览器,在地址栏中输入http://localhost:8080/first,如无异常便看看到运行结果。 

五、 加入动态页面-JSP

1、 在bundle的根下新建文件夹“WebRoot”,用于存放相应的jsp文件。

2、 在WebRoot下新建并编辑jsp文件

3、 打开“MANIFEST.MF”文件,选择“Extensions”标签,添加servlet映射,在class处填写:org.eclipse.equinox.jsp.jasper.registry.JSPFactory:/WebRoot/,在alias处填入:/*.jsp

4、启动服务后便可在浏览器里面直接访问jsp页面了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值