Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)

本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的Eclipse版本在3.2.0或以上应该都可以。

51CTO编辑推荐:OSGi入门与实践全攻略

一、支持静态页面和Servlet

1. 创建一个新的plugin项目, net.bjzhanghao.osgi.test,在向导第一步里选中“This plug-in is target,在下一步的“Plug-in Options”里选中“Generate an activator”。

 

2. 在例子项目的MANIFEST.MF里添加如下依赖项目,这些项目都是Eclipse自带的:

org.eclipse.equinox.http.jetty
org.eclipse.equinox.http.servlet
org.mortbay.jetty
org.apache.commons.logging
javax.servlet
org.eclipse.equinox.http.registry

3. 在例子项目根目录下创建一个放置web文件的目录,如“web_files”,在这个目录下写一个简单的index.html文件。

4. 为项目建一个plugin.xml文件,内容如下:

alias="/web"
base-name="/web_files"/>

注意,这时若MANIFEST.MF里提示错误,只要在Bundle-SymbolicName这一行后面加上“;singleton:=true”即可解决。

5. 现在可以启动这个应用程序了。在Eclipse菜单里选择“Run->Open Run Dialog...”,在左边的 “OSGi Framework”项下创建一个新的启动配置项,在右边先点“Deselect All”清空所有复选框,然后在Workspace下选中自己的osgi项目,再点“Add Required Bundles”按钮,Eclipse会自动把所依赖的项目选中。最后按“Debug”按钮启动,内嵌的jetty和我们的项目会一起被启动。

 

6. 打开浏览器,输入“http://localhost/web/index.html”应该可以看到index.html里的内容。

以上只验证了静态页面,现在来配置一个servlet看看。

7. 在项目里创建一个继承自HttpServlet的类,覆盖doGet()方法,内容是在网页上打印一些文本。

8. 在项目的plugin.xml里添加下面的内容,这些内容指定了servlet的访问路径和实现类:

alias="/exampleServlet"
class="net.bjzhanghao.osgi.example.servlet.ExampleServlet"/>

9. 重新启动项目,在浏览器里输入“http://localhost/exampleServlet”,应该可以看到servlet的输出。

二、支持JSP页面

10. 在index.html所在目录下创建一个简单的jsp文件index.jsp

11. 打开项目的MANIFEST.MF文件,添加如下项目依赖:

org.eclipse.equinox.jsp.jasper,
org.apache.jasper,
org.eclipse.equinox.jsp.jasper.registry,
javax.servlet.jsp,
org.apache.commons.el,
org.eclipse.equinox.http.helper,
org.eclipse.osgi,
org.eclipse.osgi.services

其中org.eclipse.equinox.http.helper需要从cvs里下载得到(目前是在/cvsroot/eclipse下的 equinox-incubator目录里,以后可能会直接放到/cvsroot/eclipse下)。

12. 修改Activator,目的是注册一个处理扩展名为.jsp类型的servlet,感觉这一步以后应该有更简单的方法,例如通过扩展点。


public class Activator implements BundleActivator {

private ServiceTracker httpServiceTracker;

String jspContext = "/jsps"; String jspFolder = "/web_files";

public void start(BundleContext context) throws Exception { httpServiceTracker = new HttpServiceTracker(context); httpServiceTracker.open(); }

public void stop(BundleContext context) throws Exception { httpServiceTracker.open(); }

private class HttpServiceTracker extends ServiceTracker {

public HttpServiceTracker(BundleContext context) { super(context, HttpService.class.getName(), null); }

public Object addingService(ServiceReference reference) { final HttpService httpService = (HttpService) context .getService(reference); try { HttpContext commonContext = new BundleEntryHttpContext(context .getBundle(), jspFolder); httpService.registerResources(jspContext, "/", commonContext);

Servlet adaptedJspServlet = new ContextPathServletAdaptor( new JspServlet(context.getBundle(), jspFolder), jspContext); httpService.registerServlet(jspContext + "/*.jsp", adaptedJspServlet, null, commonContext); } catch (Exception e) { e.printStackTrace(); } return httpService; }

public void removedService(ServiceReference reference, Object service) { final HttpService httpService = (HttpService) service; httpService.unregister(jspContext); httpService.unregister(jspContext + "/*.jsp"); super.removedService(reference, service); } } }

13. 打开Debug对话框,选中workspace里的例子osgi项目和org.eclipse.equinox.http.helper项目,再按“Add Required Bundles”按钮,然后启动程序。

14. 在浏览器里输入“http://localhost/jsps/index.jsp”,应该可以看到jsp输出

时间: 2024-10-12 11:12:35

Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)的相关文章

Equinox OSGi

1.       背景信息 Equinox项目是Eclipse开源组织提供的OSGi框架的实现.Eclipse自3.0版本开始,其内核移植到OSGi框架上.通过OSGi框架强大的组件控制,交互和管理能力,再加上Eclipse插件的自有特点,Eclipse开源框架得到了跳跃式的发展.同时,OSGi规范得益于Eclipse IDE环境庞大的使用者,OSGi联盟也进入了快速发展时期.     OSGi框架在2006年之前还不为广大的开发者所知,OSGi的开源框架实现也只有ObjectWeb上的Osca

【黑马程序员】--Java环境变量的配置步骤及JDK、JRE

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ----- 我是Hakka_LGM,请多多指教 Java环境变量的配置步骤 工具 1.JDK1.8.0 2.WIN7 x64.win8 x64 步骤 安装JDK 选择安装目录 安装过程中会出现两次 安装提示 .第一次是安装 jdk ,第二

为报表服务器应用程序配置可用内存

尽管 Reporting Services 可使用所有可用内存,但您可以通过为分配给 Reporting Services 服务器应用程序的内存资源总量配置上限来覆盖默认行为.此外,您还可以设置阈值,以便报表服务器根据内存压力(低.中或高)来更改其排列请求优先级和处理请求的方式.在内存压力较低时,报表服务器通过为交互式或按需报表处理提供一个略高的优先级进行响应.在内存压力较高时,报表服务器使用多种方法在可用资源有限的情况下保持运行状态. 本主题介绍用户可以指定的配置设置,还说明了服务器在内存压力

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating-a-wpf-chat-client-server-application/ 注意:本教程是相当广泛的,如果你是在短请也看到我们的东西 开始和 如何在几分钟内创建一个客户端服务器应用程序教程. 注2:本例中包括,明显延长进一步证明功能,在包中包含的示例 包下载. 在我们开始之前确保您已经安装了Vis

90后90网论坛量大从优 虚拟化基础架构Windows 2008篇之11-WSUS服务器的安装与配置

无论是数据中心还是在企业网络中,大多数Windows操作系统都要及时地更新补丁.对于家庭用户来说,或者对于大多数的企业用户来说,习惯于从Windows Update站点在线升级,或者使用第三方的工具(例如360)从Microsoft站点下载升级(360本身不提供补丁及镜像).但是,当网络中的服务器及工作站数量较多,并且产品较多时,都从Microsoft网站升级,一是速度慢,二是会占用大量的互联网带宽.另外,尤其是在云计算的数据中心,配置新的虚拟服务器是很简单.容易的事情,例如配置一台虚拟机只需要

sqlserver2008链接服务器中执行存储过程配置过程

参考:http://www.cnblogs.com/ycsfwhh/archive/2010/12/15/1906507.html 1.双方启动MSDTC服务MSDTC(分布式交易协调器),协调跨多个数据库.消息队列.文件系统等资源管理器的事务.该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server.该服务用于管理多个服务器 .位置:控制面板--管理工具--服务--Distributed Transa

单台服务器并发百万级配置(转)

单台服务器并发百万级配置(转) 目的:让服务器支持大量并发访问. 注:以下内容 ASP/ASP.NET IIS 用不成.另外要精通Linux,TCP/IP. 摘要:本文主要介绍利用单台PC服务器来实现可支持百万级用户并发访问的WEB服务器的实践工作.意在提出一些手段来发掘设备的潜力,充分利用设备资源,以求达到降低硬件投入成本和维护成本的目的. 随着硬件技术的飞速发展,当前单台PC 服务器的性能得到了显著提升,反之,硬件成本却在快速下降.另一方面,多数门户网站.大型社区在建设WEB服务.邮件服务等

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6

软件开发工程师(JAVA)中级考试大纲之--五 J2EE WEB高级组件开发--(三)Tomcat服务器的环境及配置;应用发布和数据源配置;

首先定义tomcat6的安装根目录为 ${CATALINA_HOME} 在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中.因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载.而context.xml文件则不然,tomcat服务器会定时去扫描这个文件.一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器.我们当然推荐把应用需要的JNDI