- 浏览: 1148983 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
osgi的equinox实现环境下,web服务器和web应用都是以osgi的bundle的形式部署到equinox环境中的。
在equinox下部署web服务器的资源与非equinox(osgi)环境下有一些不同,这为使用Spring+Struts+Hibernate的应用向equinox环境转移带来了一定的困难。而在spring中使用acegi的应用的转换麻烦要更多一些。
equinox环境自带了jetty 5.X 作为默认的web服务器。
OSGi中在org.osgi.service.http.HttpService接口中提供向web服务器部署资源的两个方法:registerServlet(...)和registerResources(...),为了看得清晰省略了两个方法中的形参列表,在下面会给出。
从这两个方法的命名上可以看出,equinox实现了HttpService接口的类,可以提供两种类型资源的部署(或者说注册),一种是静态资源Resources对应registerResources(...)方法;另一种是动态资源Servlet对应registerServlet(...)。
1、注册静态资源
registerResources(String alias, String name, HttpContext context)
静态的资源是以文件形式存在的、能被web服务程序以文件流的形式读取的内容。比如,html,image,css,javascript,properties等静态的文件。
参数说明:
A、alias
alias 是请求的URL中的一部分,可以理解为URL相对路径。
比如,访问http://www.teamlet.org/index.html
,那么alias可以设置为 /index.html
约束:这个参数必须以"/"作为字符串的开始,可以是 "/",但是不可以以"/"结尾。
并且同一个alias不能注册两次。
正确的例子: alias="/"; alias="/index.html"; alias="/test/index.html";
错误的例子: alias="test"; alias="/test/"
B、name
name是alias指定的文件的本地路径。
比如,alias为 /test.html ,而实际保存在bundle中根目录下的webroot中,因此name设定为 /webroot 。
C、context
context 是当前bundle中的上下文内容,可以设为null。当设定为null,环境将自动生成一个默认的context。
会在后面的介绍中详细说明自定义context的用法。
2、注册动态资源
registerServlet(String alias, Servlet servlet, Dictionary initparams, HttpContext context)
其他非静态资源都以servlet的形式部署(注册)。比如,serlvet,filter,listener等。
registerServlet 方法的第二个参数要求是Servlet类型的参数,因此如果注册listener、filter或者静态的内容等需要使用由equinox提供的Servlet适配器。
equinox提供了几个servlet的适配器(adaptor),以满足需要初始参数的servlet、需要contextPath的servlet以及Listener和Filter的注册需要。
由于web服务器--jetty和web应用是分别处在不同的bundle中,每个bundle都是由独立的classLoader来加载资源的,所以,即使在web应用的bundle内通过Spring将servlet、fitler、listener加载,对于web服务器--jetty的bundle来说也是不可见的。必须使用registerServlet进行部署才能让jetty识别servlet、listener和filter。
在jetty的资源部署时,一个URL的相对路径(即registerSerlvet和registerResources两个方法的参数alias)只能用一次。如果有两个servlet或者资源对应一个URL的相对路径就会报错。
Filter也存在同样的问题。用FilterServletAdaptor可以将一个servlet和Filter串接起来,在servlet之前先执行filter,然后servlet再处理。多个Filter的串接需要借助其他的方式实现(后面会在其他文章中说明)。这个filter的串接在acegi中是要使用的。
Acegi是通过FilterToBeanProxy将Servlet容器和Spring容器结合起来。FilterToBeanProxy将拦截的请求通过filterChainProxy发给一串filter处理。在非OSGi的环境中,由于是一个jvm环境,web服务器可以识别并使用由spring载入的filter链,而在equinox环境中web服务器--jetty无法使用另一个bundle中未经过registerServlet注册的任何servlet和filter。因此需要使用equinox提供的几个ServletAdaptor来处理。
更多使用举例和方法说明请见后续文章。
<完>
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1567OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20324.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2492摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1423随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1411随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1634OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12491、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1058不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1227registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1362在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1165软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3539将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1330Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11551、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1421Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13321、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1207一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1159当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1559OSGi Core定义了一个服务层,提供了一个Bundl ... -
OSGI 中嵌入 Http 服务器的运行环境
2012-07-31 13:44 3054Eclipse 4.2 OSGI 依赖的Bundle: or ...
相关推荐
4. 部署Web应用:如果`bridge.war`是一个Web应用,需要将其部署到Tomcat,这样它就能与OSGi容器内的bundle交互。 5. 配置依赖关系:确保所有的bundle都正确声明了它们的依赖,并且在容器中可用。OSGi容器会自动解决...
5. 测试“Hello World”:通过访问特定的URL,验证“Hello World”程序是否正常工作,确保OSGi环境下的Web应用已经成功部署。 在OSGi环境下开发Web应用的好处在于,我们可以独立更新和管理各个组件,避免了传统的...
6. **开发和部署**: 使用这些jar文件,开发者可以按照博客"OSGi环境下建立Web工程的Hello World"中的步骤,创建并部署OSGI兼容的Web应用。这通常涉及编写bundle的MANIFEST.MF文件来声明导出和导入的包,以及如何配置...
在本文中,我们将讨论如何在Equinox OSGi环境中嵌入Jersey框架来构建RESTful Web服务。Jersey是JAX-RS(Java API for RESTful Web Services)规范的参考实现,它提供了一种创建高效、高质量REST服务的方法。 首先,...
OSGi是一种模块化系统,用于Java应用程序的构建、部署和管理,它提供了动态发现和依赖管理的能力,使得开发者可以创建更灵活、可扩展且易于维护的应用程序。 标题中的"equinox-SDK-Oxygen"指的是基于Eclipse Oxygen...
总的来说,配置一个基于Eclipse Equinox OSGi的Web应用程序涉及对OSGI基本概念的理解、Eclipse Equinox的使用、Web服务的封装以及OSGI环境下的服务注册和发现。通过这种方式,你可以构建一个高度模块化、可扩展且...
- 创建OSGi bundle,包含Web应用的类和资源。 - 配置MANIFEST.MF,声明导出的包和服务。 - 编写Web组件,如Servlet和Filter。 - 使用Pax Web提供的API注册Web组件。 - 利用pax-runner进行测试和调试。 **总结** ...
在开发Java Web应用程序时,Struts2和Spring的集成是一个常见的选择,它们分别负责MVC框架和依赖注入。然而,在采用共享JAR包部署这样的集成项目时,可能会遇到一些问题。这篇博客文章“采用共享jar包部署struts2+...
标题中的“WEB容器托管OSGi容器(轻量级集成方式)”是指在Web应用程序服务器(如Tomcat、Jetty等)中嵌入OSGi(Open Service Gateway Initiative)框架,实现服务组件的轻量化管理和部署。OSGi是一种动态模块化系统...
它被广泛用于Web应用程序的部署,特别是对于快速开发和测试环境。在这个示例中,Jetty被用来托管BIRT查看器,使用户可以通过Web浏览器访问并交互报表。 **BIRT** BIRT是Eclipse基金会的一个开源项目,用于创建企业...
它允许开发者使用熟悉的Spring配置来定义服务和引用,简化了OSGi环境下的应用开发。 2. 自动化服务注册和发现:Spring DM会自动将Spring Bean注册为OSGi服务,并自动发现其他服务进行注入,降低了服务集成的复杂度。...
Spring MVC是Spring框架的一部分,用于构建Web应用程序。它处理HTTP请求,将请求映射到控制器,然后通过模型和视图进行响应。在OSGI中,Spring MVC可以被包装成一个bundle,与其他服务协同工作,提供Web接口供用户...
Equinox OSGi是IBM公司开发的一个开源实现,它是OSGi规范的主要实现之一,用于创建模块化Java应用程序。OSGi(Open Services Gateway Initiative)是一种Java技术,它将JVM(Java虚拟机)转换为模块化的运行时环境,...
Eclipse是一款广泛使用的开源IDE,对于Java EE开发者来说,它提供了丰富的工具集来开发、调试和部署Java Web应用程序。Eclipse中的Java EE版本包含了Web项目创建向导、内置服务器支持、自动代码完成、以及对JSP、...
5. **OSGi集成**:Jetty可以与OSGi(Open Service Gateway Initiative)框架无缝集成,如Equinox和 Felix,使得Web应用可以在模块化的环境中运行。 6. **JMX支持**:Jetty集成了Java Management Extensions (JMX),...
首先,你需要了解WAR(Web Application Archive)文件,它是Java Web应用的标准打包格式,包含了所有必要的资源、类文件和配置文件。对于RAP应用,WAR文件包含了Servlet桥接器,使得RAP应用能在Servlet容器(如...
通过ServletBridge,开发者可以将OSGI服务与传统的Web应用部署模型相结合,提供更灵活的应用管理。 **嵌入HTTP服务器** 在Equinox中嵌入HTTP服务器提供了另一种选择,允许开发者自定义HTTP服务的实现。这可能包括...
6. **测试部署**:在Equinox环境中安装并启动创建的bundle,进行测试。 #### 示例代码简述 下面展示了一个简单的`HelloServlet`类,该类继承自`HttpServlet`,并重写了`doGet`和`doPost`方法: ```java public ...