- 浏览: 307851 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (118)
- VS2008 (2)
- JAVA (34)
- AJAX (1)
- C# (1)
- Flex (16)
- FMS (6)
- SQLSERVER (1)
- ORACLE (1)
- Quartz (1)
- struts2 (1)
- java数据结构 (1)
- java设计模式 (3)
- JSF (0)
- web (2)
- jbpm4 (4)
- J2EE (1)
- webservice (2)
- javascript (8)
- spring (3)
- lucene (0)
- linux (9)
- ibatis (1)
- JPA (2)
- 外挂 (0)
- VB (0)
- Hibernate (1)
- OSGI (8)
- EXT (4)
- Maven (1)
- SpringSecurity (0)
- activiti (0)
- 项目开发 (0)
- 项目管理 (7)
- android (0)
- FFMPEG (1)
- C (2)
- eclipse (1)
最新评论
-
默默得守候在你的身边:
给力
java与Delphi写的dll交互 -
默默得守候在你的身边:
java与Delphi写的dll交互 -
fuguitong:
[url][url][url][url][url][url][ ...
doc转swf -
baidu_25402161:
到结束的时候一直 Can't delete processIn ...
一个请假单流程的实现(struts2.1.8+spring2.5+hibernate3集成jbpm4.3) -
lohaoo1:
nice!
java面包屑导航制作
SpringDM初步使用(一)
官方地址http://www.springsource.org/osgi
上面提到了仓库位置:
<repository>
<id>spring-maven-milestone</id>
<name>Springframework Maven Repository</name>
<url>http://maven.springframework.org/milestone</url>
</repository>
中文指南下载:http://forever-framework.googlecode.com/files/SpringDM_ZH.rar
先谈哈这篇内容能给你什么,通过springDM简化osgi开发。
通过maven和eclipse的结合达到更方便的开发和测试。
谈哈这篇内容会使用到的东西:
apache-maven-3.0.3,spring-osgi-1.2.1,eclipse-jee-indigo-win32,nexus-oss-webapp-1.9.1.1-bundle.zip
下面主要介绍spring-osgi-1.2.1下面的4个例子:
下面要做的就是把这4个例子正常跑起来。这几个项目需要maven的支持。
如果直接导入这几个例子很有可能不能正常运行,大部分原因是jar不能够导入进来。所以我自己创建项目,建立pom信息。目录结构如下:
将simple-service-bundle和simple-service-integration-test下面的src复制到项目中。
配置pom.xml信息,主要注意相应的jar是否引入到项目,我这里自己在nexus创建了一个springdm仓库提供所有的jar。
simple-service-bundle引入的jar:
simple-service-integration-test引入的jar图:
整个项目很简单,普通的接口,实现类,单元测试,加入了spring进行bean的管理。
只是多了simpleservice-osgi.xml这么一个文件。为什么要分开放,方便做测试。
<osgi:service id="simpleServiceOsgi" ref="simpleService"
interface="org.springframework.osgi.samples.simpleservice.MyService" />
告诉我们这个接口作为osgi里面的一个服务在运行。在simple-service-integration-test里面将看到在osgi环境里怎么获取该服务。
先将simple-service-bundle打包到本地仓库,
对测试类SimpleServiceBundleTest说明一哈:
public class SimpleServiceBundleTest extends AbstractConfigurableBundleCreatorTests { protected String[] getTestBundlesNames() { return new String[] { "org.springframework.osgi.samples, simple-service-bundle,1.2.1" }; } public Resource getTestingFrameworkBundlesConfiguration() { return new InputStreamResource( AbstractDependencyManagerTests.class.getResourceAsStream("/boot-bundles.properties")); } public void testOSGiStartedOk() { assertNotNull(bundleContext); } public void testSimpleServiceExported() { ServiceReference ref = bundleContext.getServiceReference(MyService.class.getName()); assertNotNull("Service Reference is null", ref); try { MyService simpleService = (MyService) bundleContext.getService(ref); assertNotNull("Cannot find the service", simpleService); assertEquals("simple service at your service", simpleService.stringValue()); } finally { bundleContext.ungetService(ref); } } }
如果要让测试类正常运行,必须先将simple-service-bundle安装在本地仓库,还有就是测试框架必须的jar,从测试运行的路径可以看出来:
startup()里面Resource[] bundleResources = locateBundles();
会加载路径文件:/org/springframework/osgi/test/internal/boot-bundles.properties
这个文件内容:
#
# Properties file indicating the boot (or mandatory) bundles that are loaded
# by the testing framework.
#
# Normally, this file should not be edited since it is used by the testing infrastructure.
# Users that want to install bundles before starting a test, should use #bundles() method.
#
#
# format: <groupId,artifactId,version>=+/-15
# - the optional value is used to install/remove bundles if running on JDK >= 1.5
# - see Spring org.springframework.core.JdkVersion for jdk major version codes.
# elements that have to be ignored should star with
# ignore
# Note: inner placeholders are not supported.
#
# common properties
#
# versioning
ignore.backport.version=3.1.0
ignore.junit.version=3.8.2
ignore.log4j.version=1.2.15-SNAPSHOT
ignore.spring.version=2.5.6.SEC01
ignore.spring.osgi.version=1.2.1
ignore.slf4j.version=1.5.0
ignore.asm.version=2.2.3
# groupIds
ignore.spring.groupId=org.springframework
ignore.spring.osgi.groupId=org.springframework.osgi
ignore.slf4j.groupId=org.slf4j
#
# actual libraries
#
# listed in dependency order to ease deployment
# dependencies
# junit
org.junit,com.springsource.junit,${ignore.junit.version}=
# log4j
${ignore.spring.osgi.groupId},log4j.osgi,${ignore.log4j.version}=
# slf4j (commons-logging API)
#${ignore.slf4j.groupId},slf4j-api,${ignore.slf4j.version}=
#${ignore.slf4j.groupId},slf4j-log4j12,${ignore.slf4j.version}=
#${ignore.slf4j.groupId},jcl104-over-slf4j,${ignore.slf4j.version}=
# slf4j (BRITS)
${ignore.slf4j.groupId},com.springsource.slf4j.api,${ignore.slf4j.version}=
${ignore.slf4j.groupId},com.springsource.slf4j.log4j,${ignore.slf4j.version}=
${ignore.slf4j.groupId},com.springsource.slf4j.org.apache.commons.logging,${ignore.slf4j.version}=
# aop alliance
org.aopalliance,com.springsource.org.aopalliance,1.0.0=
# asm
org.objectweb.asm,com.springsource.org.objectweb.asm,${ignore.asm.version}=
# backport concurrent
edu.emory.mathcs.backport,com.springsource.edu.emory.mathcs.backport,${ignore.backport.version}=-15
# spring libs
${ignore.spring.groupId},org.springframework.beans,${ignore.spring.version}=
${ignore.spring.groupId},org.springframework.core,${ignore.spring.version}=
${ignore.spring.groupId},org.springframework.context,${ignore.spring.version}=
${ignore.spring.groupId},org.springframework.aop,${ignore.spring.version}=
${ignore.spring.groupId},org.springframework.test,${ignore.spring.version}=
# spring osgi libs
${ignore.spring.osgi.groupId},spring-osgi-io,${ignore.spring.osgi.version}=
${ignore.spring.osgi.groupId},spring-osgi-core,${ignore.spring.osgi.version}=
${ignore.spring.osgi.groupId},spring-osgi-annotation,${ignore.spring.osgi.version}=+15
${ignore.spring.osgi.groupId},spring-osgi-extender,${ignore.spring.osgi.version}=
${ignore.spring.osgi.groupId},spring-osgi-test,${ignore.spring.osgi.version}=
如果想修改框架默认加载的bundle,只需要重写getTestingFrameworkBundlesConfiguration方法:
这里我就改写了log4j.osgi-1.2.15-SNAPSHOT为log4j.osgi-1.2.15,你甚至可以将你自己的bundle写在里面,就不用在代码里面写了。
完整的代码地址:http://chenjun-java.googlecode.com/svn/spring-osgi/
下面说哈怎么在eclipse的控制台运行该服务:
1.将spring-osgi-1.2.1下的lib和dist的jar放在eclipse-jee-indigo-SR2-win32\dropins\spring-osgi-1.2.1\eclipse\plugins目录下,然后重启eclipse。
2.新建一个osgi运行配置:
勾上所需bundle然后run:会看到控制台出现如下界面,说明已经成功启动:
可以尝试输入stop 10和start10试试看效果。
发表评论
-
OSGI学习
2012-03-18 18:01 0http://www.blogjava.net/zhenyu3 ... -
OSGI学习笔记(七)
2012-03-17 23:58 1692SpringDM初步使用(二) 介绍哈官方的第二个例子 ... -
ubuntu10.04下nexus和maven的安装及配置
2012-03-14 16:14 2508前提要有jdk环境,官方下载nexus和maven,解压后创建 ... -
ubuntu10.04下eclipse的安装及配置
2012-03-14 00:01 1306从官方http://www.eclipse.org/downl ... -
Ubuntu10.04下配置java环境变量
2012-03-13 23:28 1065Ubuntu10.04默认安装了OpenJDK,但还是基于Su ... -
eclipse设置保护色
2012-03-16 09:22 9412eclipse操作界面默认颜色为白色。对于我们长期使 ... -
OSGI学习笔记(八)
2012-03-19 21:08 2300SpringDM初步使用(三) spring第三个例子 ... -
OSGI学习笔记(五)
2011-07-31 10:32 1585开放服务网关协议 (Open Services Gateway ... -
osgi学习笔记(四)
2011-07-20 16:40 1439普通jar转osgi,使用bnd-0.0.384.jar,假设 ... -
osgi学习笔记(三)
2011-07-16 22:43 1959OSGI实战书上讲了一个web登陆验证切换功能。表达了osgi ... -
word工具类
2011-03-15 09:19 1442package org.foreverframework ... -
命令模式--撤销恢复
2011-03-14 22:32 4985该例子来自阎宏提供的 ... -
java zip
2011-03-06 15:32 1214import java.io.BufferedInputStr ... -
doc转swf
2010-12-07 22:03 8539将doc转换成swf,然后显示在html页面上。 packa ... -
javamail简单使用
2010-11-15 08:29 2349MailInfo类: //发送邮件的信息类 public ... -
xloadtree的一个改造
2010-09-20 22:58 2567修改了xloadtree的部分源码以适合自己使用。 1.修改 ... -
osgi学习笔记(二)
2010-09-12 23:18 1281以plugin.xml形式注册web服务。 plugin.x ... -
osgi学习笔记(一)
2010-09-08 22:11 3076初步了解OSGI就被这种思想吸引了。谁叫我是普通人呢,只能一步 ... -
java与Delphi写的dll交互
2010-09-05 22:27 6160有时候在项目开发的时候难免会和硬件提供的开发包接触,这些开发接 ... -
JAVA与DLL交互
2010-08-27 23:32 1945jna官网地址:https://jna.dev.java.ne ...
相关推荐
OSGi(Open Services Gateway Initiative)学习笔记(一) 在IT领域,OSGi是一种模块化系统和Java服务平台,它提供了一种动态管理软件组件的能力。本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和...
在本篇“osgi学习笔记(二)”中,我们将深入探讨OSGi(Open Services Gateway Initiative)框架的核心概念、工作原理以及如何在实际项目中应用它。OSGi是一种Java模块化系统,它允许开发人员创建可独立更新和依赖...
OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle包含自己的类加载器和资源。这些bundle可以通过动态安装、启动、停止、更新和卸载...
在本篇OSGi学习笔记中,我们将深入探讨OSGi(Open Service Gateway Initiative)这一模块化系统,特别是关于服务方面的知识。OSGi是一个Java平台上的动态模块化系统,它允许开发者创建可热部署、互相依赖的模块,...
OSGi(Open Service Gateway Initiative)是一个基于Java语言的服务规范,旨在提供一个开放的服务平台,它...学习OSGi原理与最佳实践,不仅可以提升个人的编程和系统设计能力,也是把握现代Java开发趋势的重要一环。
本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...
Eclipse插件开发学习笔记将带领我们深入了解Eclipse插件开发的方方面面。 首先,我们需要了解Eclipse插件的基础概念。在Eclipse中,插件主要由一系列的扩展点(Extension Points)组成,这些扩展点定义了插件可以...
本学习笔记将深入探讨Eclipse插件开发的相关知识,以帮助你掌握这一核心技能。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service Gateway Initiative)框架,采用模块化设计,使得每个功能都以插件的形式...
本学习笔记涵盖从基础到进阶的Eclipse插件开发全过程,通过24个章节的源代码实例,旨在帮助开发者掌握如何创建、调试和发布Eclipse插件。 在Eclipse插件开发中,首先需要理解的是OSGi(Open Services Gateway ...
【Eclipse插件开发学习笔记】是一本详细探讨Eclipse插件开发的教程,由张鹏等人编写。这本书深入浅出地介绍了如何利用Eclipse平台进行插件开发,旨在帮助开发者提升在Eclipse环境中定制和扩展功能的能力。通过阅读...
### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** ...通过以上内容的学习,开发者可以全面掌握Eclipse插件开发的基本原理和技术细节,为进一步深入研究打下坚实的基础。
本篇笔记将探讨如何在OSGi环境中注册服务以及如何引用这些服务,同时会涉及到源码分析和工具的使用。 首先,OSGi服务是一个在OSGi容器中注册的可发现和可使用的对象。服务注册的过程通常包括以下步骤: 1. **实现...
### Java学习笔记知识点总结 #### 一、JVM与内存管理 **1.1 JVM基本概念** - **JVM(Java Virtual Machine)**: Java虚拟机是执行Java字节码的虚拟机,它提供了运行Java程序所需的环境。 **1.2 线程** - **线程...
标题中的“很久之前的osgi整理”表明这是一份关于OSGi技术的历史回顾或者早期学习笔记。OSGi(Open Service Gateway Initiative)是一个Java模块化系统,它允许开发人员将应用程序分解为独立的模块或服务,这些模块...
《Eclipse插件学习笔记》是一本专注于Eclipse插件开发的书籍,旨在帮助开发者深入理解和掌握Eclipse平台上的插件开发技术。Eclipse作为一款强大的开源集成开发环境(IDE),其可扩展性主要体现在丰富的插件系统上,...
这个"struts2学习笔记"涵盖了Struts2的核心概念、配置、动作、拦截器、结果类型等关键知识点,旨在帮助初学者深入理解并掌握Struts2框架。 1. **Struts2核心概念** - **Action**:是Struts2的核心,负责处理用户的...
文档中提及的修订记录揭示了该学习笔记是如何逐步完善的过程,从概念理解、环境搭建、开发测试到应用发布和项目部署,每一修订版本都对应着学习笔记内容的更新和完善。这些记录有助于跟踪学习进度和笔记内容的演变。...
本学习笔记涵盖了Eclipse插件开发的前五章内容,旨在帮助开发者深入理解和掌握如何构建自己的Eclipse插件。 第1章:Eclipse平台简介 在这一章节中,我们首先会了解到Eclipse平台的基本架构,包括Workbench、...