- 浏览: 344567 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
苍ing:
的确很郁闷啊。同时用代码生成的页眉页脚,wps打开时看不到页眉 ...
iText生成word代码及jar包(含页眉页脚) -
jinhuazhe:
写的挺好的,有用
Unix 环境变量设置 -
zoboy:
iText生成word代码及jar包(含页眉页脚) -
zhangxy2188:
下载不了哦,请楼主重新提供一下,谢谢!
cognos10下载 -
housen1987:
shuai_94250 写道licence无效啊,麻烦您指点一 ...
Sybase数据库客户端——Auqa Data Studio 7.5(破解版)
本笔记针对Spring-dynamic 1.2.0版本进行一个简单开发应用讲解,使用Apache Felix-1.8.0作为osgi运行环境。
安装Felix
a. 运行Felix
下载 Felix-1.8.0版本,解压后,可以看到bin,bundle,conf,doc四个目录
运行命令
java -jar bin/felix.jar
b. 配置Felix, 打开conf/config.properties 文件,配置说明如下
- #设置, Felix容器启动时,自动加载的 Bundles, 下是以个是必须的
- felix.auto.start.1= \
- file:bundle/org.apache.felix.shell-1.2.0.jar \
- file:bundle/org.apache.felix.shell.tui-1.2.0.jar \
- file:bundle/org.apache.felix.bundlerepository-1.4.0.jar
- #设置log级别
- felix.log.level=1
- # 设置osgi framework 的启动级别
- #org.osgi.framework.startlevel=1
- # 设置新安装的bundle的启动级别
- #felix.startlevel.bundle=1
- # 默认情况对不完整的bundles,是抛exception异常。
- # 也可指定只提示warn,只需把下面的#注释去年即可。
- #felix.fragment.validation=warning
- # Felix installs a stream and content handler factories by default,
- # uncomment the following line to not install them.
- #felix.service.urlhandlers=false
- #
- # Bundle config properties. 其它bunlde config properties
- # 通过 BundleContext.getProperty("") 取得
- #
- org.osgi.service.http.port=8080
- osgi.shell.telnet=on
- obr.repository.url=http://felix.apache.org/obr/releases.xml
示例中,加载了 felix text ui bundle,可以通过命令行,对felix的osgi容器进行管理。
c. 给Felix加上 web console管理bundle
需要的类库
org.apache.felix.framework-1.8.0.jar # osgi framework
org.apache.felix.http.jetty-1.0.0.jar # jetty http servlet container
org.apache.felix.log-1.0.0.jar # felix log support
org.apache.felix.webconsole-1.2.10.jar
启动后,直接访问 http://localhost:8080/system/console/bundles 默认用户名和密码为 admin/admin
运行Spring-dynamic 1.2.0 bundles模块
a. 下载Spring-dynamic 1.2.0(简称dm)
运行 dm所需要类库清单如下
- spring-osgi-core-1.2.0.jar
- com.springsource.junit-3.8.2.jar
- com.springsource.org.objectweb.asm-2.2.3.jar
- com.springsource.slf4j.api-1.5.0.jar
- com.springsource.slf4j.log4j-1.5.0.jar
- com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar
- org.springframework.aop-2.5.6.A.jar
- org.springframework.beans-2.5.6.A.jar
- org.springframework.context-2.5.6.A.jar
- org.springframework.core-2.5.6.A.jar
- org.springframework.test-2.5.6.A.jar
- log4j.osgi-1.2.15-SNAPSHOT.jar
- spring-osgi-annotation-1.2.0.jar
- spring-osgi-extender-1.2.0.jar
修改 conf/conf.properties文件
- 1 felix.auto.start.1= \
- 2 file:bundle/org.apache.felix.shell-1.2.0.jar \
- 3 file:bundle/org.apache.felix.shell.tui-1.2.0.jar \
- 4 file:bundle/org.apache.felix.bundlerepository-1.4.0.jar \
- 5 file:bundle/org.apache.felix.scr-1.0.8.jar \
- 6 file:bundle/org.osgi.core-1.2.0.jar \
- #新增以下的bundles加载
- 7 file:bundle/com.springsource.org.aopalliance-1.0.0.jar \
- 8 file:bundle/com.springsource.junit-3.8.2.jar \
- 9 file:bundle/com.springsource.org.objectweb.asm-2.2.3.jar \
- 10 file:bundle/com.springsource.slf4j.api-1.5.0.jar \
- 11 file:bundle/com.springsource.slf4j.log4j-1.5.0.jar \
- 12 file:bundle/com.springsource.slf4j.org.apache.commons.logging-1.5.0.jar \
- 13 file:bundle/org.springframework.aop-2.5.6.A.jar \
- 14 file:bundle/org.springframework.beans-2.5.6.A.jar \
- 15 file:bundle/org.springframework.context-2.5.6.A.jar \
- 16 file:bundle/org.springframework.core-2.5.6.A.jar \
- 17 file:bundle/org.springframework.test-2.5.6.A.jar \
- 18 file:bundle/log4j.osgi-1.2.15-SNAPSHOT.jar \
- 19 file:bundle/spring-osgi-annotation-1.2.0.jar \
- 20 file:bundle/spring-osgi-extender-1.2.0.jar \
- 21 file:bundle/spring-osgi-io-1.2.0.jar
b. 借助dm进行开发。本节将以一个简单的应用,来演示如何使用Spring 1.2.0 进行开发。
功能说明:开发一个简单的问候模型,功能非常简单,传入参数名称,系统打印出 name, How are you today!
先定义一个接口
- 1 package com.xmatthew.practice.osgi;
- 2
- 3 /**
- 4 * Greeting interface
- 5 *
- 6 * @author xmatthew
- 7 * @since 2009-05-28
- 8 */
- 9 public interface Greeting {
- 10
- 11 String greet(String name);
- 12
- 13 }
下面实现这个接口
- 1 package com.xmatthew.practice.osgi.impl;
- 2
- 3 import com.xmatthew.practice.osgi.Greeting;
- 4
- 5 /**
- 6 * How are u greeting
- 7 *
- 8 * @author xmatthew
- 9 * @since 2009-05-28
- 10 */
- 11 public class HruGreeting implements Greeting {
- 12
- 13 public String greet(String name) {
- 14 if (name == null) {
- 15 name = "Matthew";
- 16 }
- 17 return name + ", How are you today!";
- 18 }
- 19
- 20 }
- 21
c. 接下来,借助dm,发布我们的服务
dm可以使我们借助Spring的配置文档进行服务的发布。
要求必须配置文件必须以*.xml结尾,发布目录为 META-INF/spring
目录结构如下:
greeting.jar
|---- META-INF
|---- spring
|----- greet_service.xml
|----- greet_osgi_service.xml
<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
- 1 <!-- greet_service.xml-->
- 2
- 3 <?xml version="1.0" encoding="UTF-8"?>
- 4 <beans xmlns="http://www.springframework.org/schema/beans"
- 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- 7
- 8 <!-- regular spring configuration file defining simple service
- 9 bean. We've kept the osgi definitions in a separate
- 10 configuration file so that this file can easily be used
- 11 for testing outside of an OSGi environment -->
- 12
- 13 <bean name="hruGreeting" class="com.xmatthew.practice.osgi.impl.HruGreeting" />
- 14
- 15 </beans>
- 1 <!-- greet_osgi_service.xml -->
- 2 <?xml version="1.0" encoding="UTF-8"?>
- 3 <beans xmlns="http://www.springframework.org/schema/beans"
- 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 5 xmlns:osgi="http://www.springframework.org/schema/osgi"
- 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- 7 http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">
- 8
- 9 <!-- Export the simpleService bean (defined in a separate
- 10 config file in this case) as an OSGi service -->
- 11
- 12 <osgi:service id="hruGreetingOsgi" ref="hruGreeting"
- 13 interface="com.xmatthew.practice.osgi.Greeting" />
- 14
- 15 </beans>
MANIFEST.MF
- Bundle-Version: 1.0
- Bundle-SymbolicName: com.xmatthew.practice.osgi
- Bundle-Name: Greeting Service
- Bundle-Vendor: Spring Framework
- Export-Package: com.xmatthew.practice.osgi,org.springframework.osgi.samples.simpleservice
- Bundle-ManifestVersion: 2
需要注意: Export-Package必须指定,表示把包目录发布出去。若不指定则在后面的测试中会报class not found exception
d.最后发布 greeting.jar
在Felix命令行,进行加载
start file:bundle/greeting.jar
e. 测试 greeting.jar, 看是否能正常工作
编写一个BundleActivator实现类,来调用刚才发布的服务。
- 1
- 2 import org.osgi.framework.BundleActivator;
- 3 import org.osgi.framework.BundleContext;
- 4 import org.osgi.framework.ServiceReference;
- 5
- 6 import com.xmatthew.practice.osgi.Greeting;
- 7
- 8 /**
- 9 * Greeting service client
- 10 *
- 11 * @author xiemalin
- 12 * @since 2009-05-28
- 13 */
- 14 public class Activator implements BundleActivator {
- 15
- 16 /* (non-Javadoc)
- 17 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
- 18 */
- 19 public void start(BundleContext context) throws Exception {
- 20 System.out.println("starting greeting client");
- 21 // Query for all service references matching any language.
- 22 ServiceReference ref = context.getServiceReference(
- 23 Greeting.class.getName());
- 24 if (ref == null) {
- 25 System.out.println("Couldn't find any Greeting Service");
- 26 } else {
- 27 Greeting service = (Greeting) context.getService(ref);
- 28 if (service == null) {
- 29 System.out.println("service is null");
- 30 } else
- 31 System.out.println(service.greet("Matthew"));
- 32 }
- 33 }
- 34
- 35 /* (non-Javadoc)
- 36 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- 37 */
- 38 public void stop(BundleContext context) throws Exception {
- 39
- 40 }
- 41
- 42 }
编写MANIFEST.MF文件
- 1 Manifest-Version: 1.0
- 2 Bundle-Name: Greeting Service client
- 3 Bundle-Description: A bundle that displays messages at startup and when service events occur
- 4 Bundle-Vendor: Apache Felix
- 5 Bundle-Version: 1.0.0
- 6 Bundle-Activator: com.xmatthew.practise.osgi.demo4.Activator
- 7 Require-Bundle: org.osgi.framework
- 8 Import-Package: org.osgi.framework,com.xmatthew.practice.osgi
注:Import-Package必须指定com.xmatthew.practice.osgi 。
部署 greeting_client bundle,将会输出 Matthew, How are you today!
start file:bundle/greeting_client.jar
至此使用Spring dynamic 的基本入门开发已经完成。
发表评论
-
存储过程返回多个结果集
2012-07-20 13:54 7388对于查询试的存储过程,一般会返回一个结果集,这个时候,使用正常 ... -
Oracle学习第三课(启动oracle)
2012-01-19 10:39 38【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle锁表与解除锁定
2012-01-17 13:50 3199SELECT s.sid,s.serial# as seria ... -
Oracle学习第二课(登出oracle和删除用户)
2012-01-14 19:43 4073【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
Oracle学习第一课(登录oracle和创建用户)
2012-01-14 18:16 53392【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle sqlplus出现中文乱码
2012-01-13 22:24 1753使用下面语句设置当前session的语言环境: ... -
oracle中如何创建dblink
2012-01-12 16:56 1580当用户要跨本地数据库 ... -
安装完Oracle之后没有isqlplus服务
2012-01-12 01:15 1578在命令行中运行isqlplusctl start命令即可。 -
JAR 文件规范(年底了,最近两天比较忙,可能要慢一点)
2012-01-07 13:03 3979英文版本: http://docs.oracle. ... -
第18章 Moving Data
2011-12-29 00:14 910certification objectives: D ... -
第11章 Managing Undo Data(管理撤销数据)
2011-12-24 17:55 1118certification objectives Ex ... -
Introduction to the Oracle Server Technologies(Oracle服务器技术介绍)
2011-12-22 21:33 1257certification objectives: Pos ... -
Exploring the database architecture(探索数据库架构)
2011-12-21 22:46 1007certification objectives: ... -
第七章 显示多个表中的数据
2011-12-18 17:08 1537认证目标: 使用同等连接和非同等连接编写select子 ... -
最简单的Oracle数据恢复 select ... as of
2011-12-09 10:20 5777概念: You perform a Flashback Qu ... -
cognos10下载
2011-12-08 22:10 2937cognos10 for windows下载地址: ... -
第八章 使用子查询解决问题
2011-12-06 15:42 1475认证目标: 定义子查询 描述子查询能够解决的问题的类 ... -
Oracle建立HR模式
2011-11-18 10:32 9695官方帮助 写道 Installing the HR Sch ... -
Oracle 权限、角色和安全规则
2011-11-16 15:54 1411权限 权限是执行某种类型的SQL语句和访问其他用户对象的 ... -
Oracle性能监视
2011-11-16 11:43 1234反应性监视(reactive) 10g以前的监视方法,事 ...
相关推荐
标题 "SpringDM笔记31-Testing with OSGi and SpringDM" 涉及到的是在OSGi环境中使用SpringDM进行测试的相关知识。OSGi(Open Service Gateway Initiative)是一种Java模块化系统,允许动态地发现、加载和卸载服务。...
### OSGi与Spring:Spring DM开发环境配置详解 #### 一、引言 随着软件架构的不断发展,模块化和微服务化的趋势日益明显。在Java领域,OSGi(Open Service Gateway Initiative)作为一套成熟的技术标准,为实现模块...
通过学习这些文档,开发者不仅可以掌握OSGI、Maven和Spring DM的基本概念,还能了解到如何将这些技术结合在一起,构建可扩展、模块化的Java应用。这对于希望在企业级Java开发中实现高效、灵活和可维护性的人来说,是...
### SpringDM与OSGI概述 #### OSGI概念解析 OSGI(Open Service Gateway Initiative),直译为“开放的服务网关初始化”,它是一系列针对Java动态化模块化系统的规范。OSGI不仅指代一个官方联盟,还代表着由该联盟...
标签提到的“源码”可能指的是查看和学习SpringDM以及相关OSGi库的源代码,这对于理解其工作原理和实现细节非常有帮助。同时,“工具”可能是指像Eclipse PDE或SpringSource Tool Suite这样的集成开发环境,它们提供...
【标题】:“基于Spring DM Server的OSGi实例” 在IT领域,OSGi(Open Services Gateway Initiative)是一种模块化系统和Java...对于学习和理解OSGi以及Spring DM Server的开发者来说,这是一个非常有价值的参考案例。
2. **打包Spring应用为OSGi bundle**:将Spring应用的类和依赖打包成遵循OSGi规范的bundle,每个bundle代表一个模块。 3. **声明服务和依赖**:在MANIFEST.MF文件中声明bundle提供的服务和依赖其他服务。 4. **使用...
2. **Spring与OSGI的桥梁**:Spring Dynamic Modules(SDM)是Spring项目的一部分,它提供了在OSGI环境中使用Spring的基础设施。SDM允许Spring应用在OSGI容器中作为bundles运行,并管理它们的生命周期。 3. **服务...
这个"struts2学习笔记"涵盖了Struts2的核心概念、配置、动作、拦截器、结果类型等关键知识点,旨在帮助初学者深入理解并掌握Struts2框架。 1. **Struts2核心概念** - **Action**:是Struts2的核心,负责处理用户的...
标题 "OSGI+SpringDM+Hessian" 涉及到三个重要的技术概念,它们分别是OSGI(Open Services Gateway Initiative)、SpringDM(Spring Dynamic Modules)和Hessian。这些技术在Java开发领域中都有其独特的应用和价值。...
标题“Spring DM集成Struts2(一)”指出我们要探讨的主题是关于如何在OSGi(Spring DM,即Spring Dynamic Modules)环境中集成Struts2框架。这是一个关键的Java Web开发中的技术结合,因为它允许开发者利用Spring的...
2. Spring DM库:如`spring-osgi-core`, `spring-osgi-io`, `spring-osgi-extender`等,提供了与OSGi环境交互的接口和工具。 3. OSGi框架库:如`org.eclipse.osgi`,这是实现OSGi规范的实现,例如Equinox或Felix。 4...
Spring-DM指的是 Spring ...Spring-DM 的主要目的是能够方便地将 Spring 框架和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环境中,利用OSGi框架提供的服务,将应用变得 更加模块化。
学习Spring DM,你需要了解OSGi的基本概念,理解模块化开发的优势,掌握Spring框架的核心特性,以及如何编写和解析Spring DM的元数据配置。此外,实践是提高技能的关键,通过分析提供的示例和自己动手创建项目,你会...
《SpringDM开发文档》是关于SpringDM框架的详细技术指南,该框架是在OSGi环境中运行Spring应用程序的关键组件。SpringDM,全称为Spring Dynamic Modules,是Spring框架针对OSGi(Open Service Gateway Initiative)...
在SpringDM(Spring Dynamic Modules)框架中,OSGi(Open Service Gateway Initiative)服务注册与引用是核心功能之一,它使得模块化系统中的组件能够互相发现并交互。本篇笔记将探讨如何在OSGi环境中注册服务以及...
Spring Dynamic Modules (Spring DM),作为Spring框架的扩展,旨在为OSGi环境下的应用开发提供强大的支持。它将Spring的依赖注入和面向切面编程能力与OSGi的模块化特性相结合,为开发者在构建动态、可扩展的企业级...
Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它...通过学习和掌握Spring DM Server的使用以及Spring OSGi的相关库,开发者可以更好地在OSGi环境中构建和管理Spring应用。