- 浏览: 1149124 次
- 性别:
- 来自: 火星郊区
博客专栏
-
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倍效率”开发者
4.1.开发环境搭建
4.2开发工具
Maven 3
Felix 4
Eclipse
4.3环境配置
4.3.1 maven环境配置
(1)下载maven,解压到D盘
(2)在系统变量中添加M2_HOME D:\apache-maven-3.0.4;在系统变量的path中添加
%M2_HOME%\bin注意用英文分号隔开
(3)在cmd下输入mvn -version测试是否安装成功
4.3.2 Eclipse集成maven
) 启动eclipse,如图所示选择install new software…
(2) 点击 Add 按钮 按以下步骤安装:
1 . 安装 Subclipse
要安装Subclipse,使用下面的Eclipse插件更新站点。
Subclipse 1.2: http://subclipse.tigris.org/update_1.2.x
想要了解其它版本的Subclipse,以及关于Subclipse插件更多的信息,请访问Subclipse项目的web站点:http://subclipse.tigris.org/ 。
2. 安装 Mylyn
要安装集成了JIRA支持的Mylyn,添加Mylyn Extras的Eclipse更新URL,如果你的组织使用Atlassian's JIRA 来跟踪问题,你会需要这么做。使用下面的更新站点来安装Mylyn:
Mylyn (Eclipse 3.3): http://download.eclipse.org/tools/mylyn/update/e3.3
Mylyn (Eclipse 3.4): http://download.eclipse.org/tools/mylyn/update/e3.4
Mylyn Extras (JIRA 支持): http://download.eclipse.org/tools/mylyn/update/extras
想了解关于Mylyn项目的更多信息,访问Mylyn项目的web站点:http://www.eclipse.org/mylyn/ 。
3. 安装 AspectJ Tools Platform (AJDT)
如果你正在安装m2eclipse的0.9.4版本,你可能同时也想要安装Web Tools Platform (WTP) 和 AspectJ Development Tools (AJDT)。使用如下的eclipse更新URL以安装AJDT。
AJDT (Eclipse 3.3): http://download.eclipse.org/tools/ajdt/33/update
AJDT (Eclipse 3.4): http://download.eclipse.org/tools/ajdt/34/dev/update
想要了解更多的关于AJDT项目的信息,请访问AJDT项目的web站点http://www.eclipse.org/ajdt/ 。
4. 安装 Web Tools Platform (WTP)
要安装Web Tools Platform (WTP)。使用如下的eclipse更新URL,或者直接在Discovery站点中寻找Web Tool Project,该站点应该已经在你的Eclipse远程更新站点列表中了。
WTP: http://download.eclipse.org/webtools/updates/
关于更多的Web Tools Platform的信息,请访问Web Tools Platform项目的web站点http://www.eclipse.org/webtools/ 。
5 安装 m2eclipse
一旦你已经安装好这些先决条件,你从如下的Eclipse更新URL安装m2eclipse插件和m2eclipse-extras:
m2eclipse 插件: http://m2eclipse.sonatype.org/update/
m2eclipse-extras : http://m2eclipse.sonatype.org/sites/m2e-extras
最后 maven要用jdk,作用maven时要指定jdk;
在重启eclipse之前,更改eclipse.ini,在–vmargs前面(一定要在其前面)加上:
-vm
D:\Java\jdk1.6.0_07\bin\javaw.exe //改为你自己的jdk目录
否则会在启动eclipse时报错
至此maven在eclipse按的安装就算完成了。
最好不要使用m2ecplise使用内嵌的Maven:
Windows- Preferences-Maven-Installation, 单击Add...按钮,然后选择Maven安装目录M2_HOME,添加完毕后选择这个外部的Maven。
4.3.3 配置局域网内部maven库
4.4 在Eclipse+Maven环境下创建bundle应用:
4.4.1 新建Maven Project
(1)在File菜单下选择New>Project…, 选择Maven Project 点击next
(2)选择Create a simple project ,点击next
(3)在设置页面输入工程信息,如图,完成后点击finish。
(4) 生成maven工程,如图所示,其中,src/main/java目录放置java源文件,src/main/resources放置其他资源文件(如css,js,html,jsp文件),target目录放置运行mvn install命令后生成的文件。
4.4.2 Project Object Model(pom.xml)基本配置说明
project
:
pom.xml
文件中的顶层元素;
modelVersion
:
指明
POM
使用的对象模型的版本。这个值很少改动。
groupId
:
指明创建项目的组织或者小组的唯一标识。
GroupId
是项目的关键标识,典型的,此标识以组织的完全限定名来定义。比如,
org.apache.maven.plugins
是所有
Maven
插件项目指定的
groupId
。
artifactId
:
指明此项目产生的主要产品的基本名称。项目的主要产品通常为一个
JAR
文件。第二,象源代码包通常使用
artifactId
作为最后名称的一部分。典型的产品名称使用这个格式:
<artifactId>- <version>. <extension>(
比如:
myapp-1.0.jar)
。
version
:
项目产品的版本号。
Maven
帮助你管理版本,可以经常看到
SNAPSHOT
这个版本,表明项目处于开发阶段。
name
:
项目的显示名称,通常用于
maven
产生的文档中。
url
:
指定项目站点,通常用于
maven
产生的文档中。
description
:
描述此项目,通常用于
maven
产生的文档中。
dependencies :
plugins
Export-Package
repository
4.4.2 一些重要的maven plugin
maven-bundle-plugin:
iPOJO Plugin:
junit4osgi Plugin:
SCR Plugin:
4.5 bundle版本说明
4.5.1 版本格式
Major.minor.patch level
4.5.2 版本约束
(1) 第一次发布 1.0.0
(2) 修复bug,但不涉及修改接口 ,由1.0.0->1.0.1
(3) 在接口中增加了函数,修改minor,由1.0.1->1.1.1,此种变更不影响之前的依赖关系,因此在之前依赖1.0.1版本的bundle不需要修改。
(4) 若变更无法向上兼容,如删除函数,修改函数返回类型等,修改major号,由1.1.1-2.0.0
4.6 bundle部署及更新
4.6.1 部署
1,将bundle 打包
命令行:mvn package
Ecplise: run as->Maven package
2,将bundle install到本地依赖库(便于自己测试)
命令行:mvn install
Eclipse: run as->Maven install
3,将bundle 发布到远程bundle库中(本地测试成功,发布到服务器上进行测试)
命令行:mvn deploy
Eclipse:目前无。
。
4.6.2 更新
(1) 刷新OBR库:repos refresh file:///path/repository.xml
(2) 通过update id命令更新对应的组件
4.7服务注册与依赖管理
4.7.1 OSGI原生依赖管理机制
-
被依赖的 bundle 通过 BundleContext.registerService() 方法注册服务到系统中
-
使用依赖的 bundle 在 start 时通过 BundleContext 的 getServiceReferences()/
getService() 来查找依赖的 service
-
使用依赖 bundle 通过 BundleContext.addServiceListener() 来分别注册
ServiceListener
-
在被依赖的 bundle/service 状态发生变化时 , 使用依赖 bundle 通过 ServiceListener 的 serviceChanged() 得到通知并作出调整
缺点:
-
编码量较大
-
Activator 复杂度较高:对于一些业务逻辑简单的 service ,如果依赖的 service 比较多,那么 Activator 的逻辑和代码实现远比 service 本身的逻辑和实现要复杂。
-
对测试不利。
4.7.2 iPOJO
优点:
-
组件被作为POJO(Plain Old Java Objects简单Java对象)开发,不需要其他任何东西
-
组件模块是可扩展的,因此可以自由的适应需要
-
标准组件模型管理service 供应和service 依赖,所以可以要求其他任何OSGI服务来创建组合服务,
-
iPOJO管理组件实例的生命周期和环境动态
-
iPOJO提供一个强力的组合系统来创建高度动态的应用
-
iPOJO支持注解,xml或者基于Java的API来定义组件
meta.xml文件说明:
component:
provides:
requires:
instance:
-
组件管理容器
通过iPOJO管理组件实例的生命周期和环境动态
对服务注册
服务是组件服务接口函数的具体实现
-
开发和注册服务
申明函数接口组件(API):一般只包括JAVA接口定义和常量,打包成jar并放在OBR库中
组件功能实现及服务发布(Impl):包含实现函数,包含iPOJO配置文件meta.xml,通过component 发布服务。
-
调用服务
4.8在组件中加入日志服务
4.8.1部署本地日志服务
Deploy –s "Apache Felix Log Service"
使用log指令监控bundle生命周期
4.8.2日志监控及写入
通过LogListener接口来读取log信息
public class LogWriter implements LogListener
{
// Invoked by the log service implementation for each log entry
public void logged(LogEntry entry)
{
System.out.println(entry.getMessage());
}
}
-
debug
Debug的方法有如下三种:
-
用felix 的ecplise的插件pax runner。
-
以debug模式运行一个felix监听端口,再远程调试bundle。
-
在bundle中下断点,以debug模式运行felix。
-
在bundle中下相应的断点
-
部署bundle到相应的felix bundle目录下
3,右键felix项目 选择debug as-> java application 如图所示
当运行到断点处的时候,eclpise会自动进入如下debug界面
-
5.0单元测试
5.1 团队协作
为了便于协同开发,我们将在本地搭建一个maven私服,felix服务器,svn。
Maven私服搭建
一、安装服务器
1 、下载
我们可以在 nexus 的官网 上找到它的相关介绍,下载地址是: http://nexus.sonatype.org/downloads/ ,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是: nexus-oss-webapp-1.8.0-bundle.tar.gz 。关于 Nexus 的详细使用方法可以参照: Repository Management with Nexus.
2 、安装
解压下载的文件:
# tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz
解压后会在同级目录中,出现两个文件夹: nexus-oss-webapp-1.8.0 和 sonatype-work ,前者包含了 nexus 的运行环境和应用程序,后者包含了你自己的配置和数据。
3 、启动 nexus
在上面的提到, nexus 的运行环境在 nexus-oss-webapp-1.8.0 目录,下面就进入这个目录启动:
# cd nexus-oss-webapp-1.8.0/bin/jsw/linux-x86-64/
在这个目录下包含了一个文件夹和三个文件: lib 、 nexus 、 platform 和 wrapper ,其中 nexus 就是启动命令。
# ./nexus
执行上面的命令,可以得到 nexus 命令的用法提示: start 命令启动, stop 命令停止。下面启动 nexus :
# ./nexus start
Starting Nexus OSS...
Started Nexus OSS
从控制台输出可以看到 Nexus 已经启动成功,我们可以通过 log 文件查看更详细的信息:
# cd ~/nexus-oss-webapp-1.8.0/log
# tail -f wrapper.log
在 log 中可以看到 nexus 默认监听的端口是 8081 。那么我们就可以在浏览器中访问 :http://host:8081/nexus ,
二、配置 Nexus
由于在新搭建的 nexus 环境中只是一个空的仓库,所以第一步就是要和远程的 Maven 中心仓库进行同步。
如果在 Reindex 之后,并没有同步到远程的仓库,可以检查每个仓库的设置。下面是 Maven Central 的设置:
三、在项目中使用私服
在完成了上面的配置后,就可以将项目中默认的 Repository 切换为本地的私服了,只需要在 pom.xml 中增加 repositories 就可以了:
[xhtml] view plain copy print ?
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
<modelVersion> 4.0.0</modelVersion>
-
-
<groupId> org.maven.demo</groupId>
-
<artifactId> MavenDemo</artifactId>
-
<version> 0.0.1-SNAPSHOT</version>
-
<packaging> jar</packaging>
-
-
<name> MavenDemo</name>
-
<url> http://maven.apache.org</url>
-
-
<repositories>
-
<repository>
-
<snapshots>
-
<enabled> true</enabled>
-
</snapshots>
-
<id> public</id>
-
<name> Public Repositories</name>
-
<url> http://172.28.189.138:8081/nexus/content/groups/public/</url>
-
</repository>
-
</repositories>
-
<pluginRepositories>
-
<pluginRepository>
-
<id> public</id>
-
<name> Public Repositories</name>
-
<url> http://172.28.189.138:8081/nexus/content/groups/public/</url>
-
</pluginRepository>
-
</pluginRepositories>
-
<dependencies>
-
<dependency>
-
<groupId> junit</groupId>
-
<artifactId> junit</artifactId>
-
<version> 4.8.1</version>
-
<type> jar</type>
-
<scope> compile</scope>
-
</dependency>
-
</dependencies>
发表评论
-
关于Felix Log Service
2012-12-07 16:44 1567OSGi服务纲要规范中定义了服务于OSGi平台的通用日志服 ... -
【绝对路径】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应用必须要借助一些工具包提供的 ... -
equinox环境下web应用资源的部署
2012-09-19 17:04 1307osgi的equinox实现环境下,web服务器和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 1560OSGi Core定义了一个服务层,提供了一个Bundl ... -
OSGI 中嵌入 Http 服务器的运行环境
2012-07-31 13:44 3055Eclipse 4.2 OSGI 依赖的Bundle: or ...
相关推荐
Eclipse 搭建 Maven 项目详解 Maven 是一个项目管理工具,能够帮助开发者更好地管理项目的依赖关系和编译过程。Eclipse 是一个流行的集成开发环境(IDE),提供了对 Maven 的支持。下面将详细介绍如何在 Eclipse 中...
**eclipse-maven3-plugin** 是一个专门为 Eclipse IDE 设计的插件,它允许开发者在 Eclipse 开发环境中无缝集成 Maven 构建工具。Maven 是一个项目管理和综合工具,广泛用于 Java 应用程序的构建、依赖管理和项目...
ECLIPSE MAVEN3插件文件(eclipse-maven3-plugin工具)
- **配置Eclipse与Maven**: 在Eclipse中,通过“Window” -> “Preferences” -> “Maven”设置Maven的本地仓库路径和安装路径,确保Eclipse能识别Maven。 - **创建Maven项目**: 使用Eclipse的新建项目向导,选择...
本篇文章主要介绍如何利用 Eclipse 和 Maven 将本地项目自动部署到 Nexus 仓库中。这种方法适用于团队协作环境下的依赖管理,能够帮助团队快速、稳定地进行项目的构建和分发。 #### 第一步:设置允许部署的服务器...
1. 在你的 eclipse 安装的根目录下创建两个文件夹:links,plugins(名字可以随便取),我的这两个文件夹位于:path=D:/Development/eclipse-JavaEE/eclipse(作为参考,下面用到) 2. eclipse-maven3-plugin.7z ...
在IT行业中,Maven、Dubbo和Eclipse是三个非常重要的工具,它们...通过Maven管理项目依赖,Dubbo实现服务间的通信,Eclipse作为开发环境,开发者可以快速构建、测试和部署分布式应用,从而提高软件开发的生产力和质量。
4. **更新项目配置**:当pom.xml文件更改时,m2eclipse会自动更新项目的构建路径和类路径,确保与Maven配置同步。 5. **源码与Javadoc集成**:m2eclipse可以自动下载并关联项目的源码和Javadoc,便于调试和查阅。 ...
Eclipse构建和部署Maven项目涉及多个步骤,包括创建Maven工程、配置Maven项目、将其转换为Dynamic Web项目以及设置Web部署集。以下是对这些步骤的详细解释: 1. 创建Maven工程: - 在Eclipse中,选择"File" > "New...
在本项目中,我们主要探讨如何使用Eclipse Oxygen和Maven构建一个基于SpringMVC、MyBatis和Druid的数据访问层(DAO)框架。这个框架提供了基础的增删改查(CRUD)功能,是Java Web开发中的常用组合。下面我们将详细...
3. **Maven的热部署插件**:如`maven-eclipse-plugin`或`m2e-wtp`插件,它们可以自动检测源码变化并同步到服务器,而无需手动刷新或重启。 4. **Tomcat的热部署配置**:在Tomcat的`conf/server.xml`文件中,启用`...
java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven视频教程云盘下载链接
本文将详细介绍如何搭建Eclipse与Maven的集成环境,帮助开发者更高效地进行Java项目开发。 **一、Eclipse安装** 1. 下载Eclipse:首先,你需要从Eclipse官方网站(https://www.eclipse.org/downloads/)下载适合你...
【 Maven 热部署在 Eclipse 和 Tomcat 中的实践】 Maven 是一个强大的构建工具,广泛用于Java项目管理,它负责构建、依赖管理和项目信息管理。在开发Web应用程序时,结合Eclipse集成开发环境(IDE)和Tomcat服务器...
直接离线安装eclipse中的maven插件,在你的eclipse安装根目录下创建两个文件夹:links,myplugins(文件夹名字可以自定义),所在路径D:\eclipse。将下载下来的maven插件放到myplugins下。载links目录下创建一个...