- 浏览: 1155774 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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也这么久了,其中也走了不少的弯路。为了更好的推广osgi,并避免新手能少走一些弯路,接下来的几篇文章,我会通过几个简单的实例,来介绍一下如何快速的掌握osgi。其实,网上有不少好的文章推荐,顺便也可以比较一下。BlueDavy的osgi 实战是值得推荐的,当初也是看了之后,少走了很多弯路。参见网址:http://www.blogjava.net/BlueDavy/。ModuleFusion 也是一个不错的项目,里面集成了现有的优秀框架,包括hibernate,guice,wicket等。 参见网址:http://code.google.com/p/modulefusion/。
废话少说,就从一个简单的Helloworld开始吧。
要做项目,少不了工具。Eclipse,反正搞java的基本都应该有了,这里用的是最近的3.4.1版本,以前一直用3.3.1,这两天刚更新。java就是这个比较讨厌,很多东西不停的更新,然后手上的工具包也得不停的更新。osgi 实现,当然首选equinox,版本也是3.4.1。其实Eclipse里面已经包括了equinox,当然单独下载也没有问题。看了看equinox,最近又增加了不少的服务,其实很多都是用不着的,别被这些东东吓着。
简单的介绍一下需要的bundle:
org.mortbay.jetty_5.1.14 jetty 容器,当然是需要的,如果你不需要外部web服务器的话。
org.eclipse.osgi_3.4.2. 这是核心的equinox实现,也就是系统bundle
org.eclipse.osgi.services_3.1.2 这也是必备的,作为osgi服务接口
org.eclipse.equinox.common_3.4.0 这也是必备的,equinox的共同核心
org.eclipse.equinox.registry_3.4.0 这是用于equinox 插件扩展的,也是必须的。plugin.xml就是这个bundle处理的
org.eclipse.equinox.http.servlet_1.0.1 http servlet包,包括了主要的proxyServlet类,作为主要的桥接Servlet
org.eclipse.equinox.http.registry_1.0.1 http servlet,resource 注册服务
org.eclipse.equinox.http.jetty_1.1.0 主要的用于启动jetty的代码
javax.servlet_2.4.0 servlet规范
org.apache.commons.logging_1.0.4 用于处理日志
以上的包都是必须的。
其他可选的包,以后再介绍。
好了,先在eclipse中建一个项目吧。创建plugin project而不是java project。当然你也可以转成pluign project。
如以下的图,一直next
提一下几个重要的文件:
osgi bundles,必需的文件为MANIFEST.MF 大写,在META-INF下面
plugin.xml,这是eclipse的插件文件,用于扩展使用。
至于build.properties是用于打包的,可以不需要。
修改一下相应的信息,如下图:基本上已经创建好了。
简单说明一下:ID,也就是Bundle-SymbolicName 这是必须的。version 也就是Bundle-Version 也是必须的。其他可以随便。
下面说明一下,我们需要几个重要的包,所以需要引入,点击Dependencies右边的import packages 的add。
增加后,如下图
说明一下,如果你需要引入相应的类,就像你在classpath中引入包一下一样。
由于,我们需要扩展Servlet,所以还需要http.servlets扩展,所以需要引入bundle:..http.registry。如下图:
下面创建一个简单的HelloServlet
- public class HelloServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- doPost(req, resp);
- }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- resp.setContentType("text/html");
- resp.getWriter().print("My fist osgi application");
- resp.getWriter().close();
- }
- }
public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.getWriter().print("My fist osgi application"); resp.getWriter().close(); } }
接下来是关键的一步,定义扩展
如下图
说明一下:class:org.demo.HelloServlet 就是我们创建的servlet
alias:用于浏览器访问的路径,如http://localhost:8080/hello
基本已经就绪,可以启动。
创建一个新的osgi framework 运行配置,如下图:
选择上面的几个bundle,以及你创建的项目。然后运行就可以了,默认的端口为80,如果需要更改,配置参数
org.osgi.service.http.port=端口号
如下图:
现在可以直接在浏览器中访问了,一个osgi 应用已经完成。
在console中输入ss,可以看到下面的提示,表示你的bundles基本已经运行正常。
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.2.R34x_v20080826-1230
1 ACTIVE org.demo.helloworld_1.0.0
2 ACTIVE org.eclipse.equinox.registry_3.4.0.v20080516-0950
3 ACTIVE org.eclipse.osgi.services_3.1.200.v20071203
4 ACTIVE javax.servlet_2.4.0.v200806031604
5 ACTIVE org.eclipse.equinox.http.registry_1.0.100.v20080427-0830
6 ACTIVE org.eclipse.equinox.http.jetty_1.1.0.v20080425
7 ACTIVE org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830
8 ACTIVE org.eclipse.equinox.common_3.4.0.v20080421-2006
9 ACTIVE org.mortbay.jetty_5.1.14.v200806031611
10 ACTIVE org.apache.commons.logging_1.0.4.v20080605-1930
评论
不过请恕愚钝,我还是没有很理解为什么会把servlet牵扯进来,于是我的感受仍然是“云里雾里”,看不到心目中真正的osgi啊。。。。
我预想osgi的入门应该是:如何让system bundle加载一个基于最简单的java类的bundle。。。
不知道楼主能不能解惑。。。辛苦你了,另外,如果可能的话,能不能抛开eclipse和equinox直接做一个最简明的osgi实现范例呢?
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1581OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
Maven 3 Felix 4 Eclipse 的搭建与部署(部分转载自别人文章)
2012-10-18 10:24 20474.1.开发环境搭建 4.2开发工具 Maven 3 F ... -
【绝对路径】OSGi环境中获取Plugin/Bundle中文件资源的绝对路径
2012-10-08 10:53 2523摘要:在进行Eclipse RCP开发的过程中,需要使用一 ... -
OpenCore:基于OSGi开发纯插件体系结构的WEB应用程序
2012-09-21 17:46 1432随着OSGi/Equinox逐渐成为Java EE服务端的基础 ... -
OSGi技术在Java Web开发中的应用
2012-09-20 11:26 1422随着 Java SE 对模块化功能原生支持的一再推迟(据最 ... -
OSGI典型的应用案例
2012-09-20 11:26 1645OSGI典型的应用案例主要有两个:分别是Eclipse和BMW ... -
OSGi特点
2012-09-20 11:26 12591、JRE版本无关性。虽然Java一直被人们认为是“Write ... -
OSGI与JMX 的关系
2012-09-19 17:09 1067不过重点是: JMX 本来设计的用途就只为了管理,我们不 ... -
在equinox环境开发web应用的"利器" -- registerResources()方法 详解
2012-09-19 17:07 1245registerResources()方法详解 1、简介 ... -
在equinox环境开发web应用的"利器" -- 序
2012-09-19 17:05 1374在equinox环境中开发web应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1315osgi的equinox实现环境下,web服务器和web应用都 ... -
OSGi产生的背景--在繁荣的混乱之中走出困惑
2012-09-19 16:58 1180软件的复杂性正在以惊 ... -
将web容器置于OSGi框架下进行web应用的开发
2012-09-16 14:26 3550将web容器置于OSGi框架下,其实就是将web容器做成OSG ... -
在Eclipse中开发OSGi Bundle
2012-09-16 14:26 1340Eclipse为开发OSGI Bundle提供了良好的支持,它 ... -
【第一代服务注册形式】 - 将一个Bundle注册为服务
2012-09-14 10:09 11611、创建业务接口类及其实现类 Java代码 ... -
Declarative Services规范简介及应用
2012-09-14 10:08 1432Declarative Services 是一 ... -
用FileInstall管理Bundle的动态安装、启动、卸载
2012-09-14 10:07 13401、文件目录如下: F:\study_osgi ... -
服务工厂 - Bundle消费者返回不同的服务对象
2012-09-14 10:03 1213一般情况下,服务对象在注册后,任何其它的Bundle在请求 ... -
服务跟踪(ServiceTracker)
2012-09-14 09:58 1168当多个Bundle使用同一 ... -
OSGi容器中Bundle之间Synchronous Communication
2012-09-11 17:07 1571OSGi Core定义了一个服务层,提供了一个Bundl ...
相关推荐
在本入门资料中,我们将探讨OSGI的关键概念、优势以及如何通过实战和最佳实践来掌握它。 1. OSGI原理: OSGI的核心在于它的模块系统,称为“bundle”。一个bundle是一个自包含的Java模块,包含了类、资源和元数据...
OSGi(Open Services Gateway Initiative)是一种Java平台上的模块化服务框架,它定义了一种标准,使得开发者能够构建可互操作的、动态的、模块化的软件系统。OSGi的核心概念是基于Java的模块化,它的主要目标是为...
OSGi的入门资料,网上找的,初探OSGi 的全文
标题"OSGI入门和例子"意味着我们将探讨OSGI的基本概念以及如何通过实例来学习和理解这个框架。下面,我们将深入讨论OSGI的关键知识点: 1. **模块系统**:OSGI的核心是模块化,它定义了一种基于Java导出和导入包的...
学习OSGI入门和整合Spring,对于开发复杂的企业级应用,或者想要提升系统灵活性和可维护性的开发者来说,是非常有价值的。通过理解OSGI的模块化机制和Spring的依赖注入原理,可以构建出更加高效和可扩展的Java应用。
### Spring OSGi 入门知识点...以上内容为Spring OSGi入门的基本知识点,涵盖了Spring DM的基础概念、配置方法以及如何在OSGi环境中导出和引用服务等内容。这些知识点对于理解如何将Spring与OSGi结合使用具有重要意义。
《OSGI入门和整合Spring》则关注OSGI与Spring框架的结合,主要讨论: 1. **Spring与OSGI集成原理**:Spring的bean管理如何与OSGI服务机制相结合,实现更灵活的依赖注入。 2. **Declarative Services(DS)**:利用...
### OSGi 入门教程(mini) 关键知识点概览 #### 1. OSGi 概述 - **定义**:OSGi (Open Service Gateway Initiative) 是一种用于构建模块化 Java 应用程序的标准框架。它允许将应用程序划分为独立的、可重用的模块,...
下面将详细介绍Spring OSGi的基本概念、优势以及如何入门。 一、Spring OSGi 基本概念 1. Spring Framework:Spring是一个全面的Java企业级应用开发框架,提供依赖注入、AOP(面向切面编程)、数据访问、事务管理...
很基础全面的OSGI ppt教程,讲解的很详细。
### OSGi 入门与实践 #### OSGi 的历史背景 OSGi,全称为 Open Service Gateway Initiative,从字面上理解,它最初被设计为一个面向服务的平台。1999 年,OSGi 联盟成立,旨在为通过网络向设备提供服务建立开放的...
在OSGI入门阶段,首先要理解的是它的基本概念,如bundle(模块)、服务、生命周期管理和依赖管理。Bundle是OSGI中的核心组件,它类似于Java的JAR文件,但具有自己的元数据和生命周期。每个bundle可以导出和导入服务...
在OSGi入门篇:模块层这篇文章中,作者静默虚空深入探讨了OSGi框架中模块层的基础知识以及设计模块层时OSGi联盟所做的考虑。OSGi模块层是框架中最基础的部分,它实现了Java的模块化特性,但又与Java现有的模块化特性...
**标题:“OSGi入门”** **描述:** 这篇博客文章主要介绍了OSGi(Open Services Gateway Initiative)的基础知识,包括它的起源、概念以及在Java开发中的应用。作者通过一个实际的例子来帮助读者理解如何使用OSGi...
### Spring OSGi 入门知识点详解 #### 一、Spring-DM与OSGi结合的优势 Spring Dynamic Modules (Spring DM) 是Spring Framework的一个扩展项目,它使得Spring可以在OSGi环境中运行,进而为开发者提供了模块化的...
Spring OSGi 是一个将 Spring 框架与 OSGi(Open Service Gateway Initiative)容器相结合的开源项目,旨在提供一种在 ...提供的压缩包文件可能包含了入门手册和示例代码,这些资源将有助于你快速上手 Spring OSGi。
**入门篇** 1. **模块系统**:OSGi的核心是模块化,每个模块称为一个Bundle,它包含类、资源和元数据。Bundle之间通过导出和导入包来实现依赖关系。 2. **生命周期管理**:OSGi Bundle有启动、停止、安装、更新和...