`
qinjingkai
  • 浏览: 262123 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

felix整合spring

阅读更多

 如题,整合两个框架的目的就是利用spring来管理Bean的生命周期和进行一些依赖注入!参考了http://www.ibm.com/developerworks/cn/webservices/ws-osgi-spring2/了一文;但是该文还是有很多问题,经过长时间的摸索和尝试,终于成功的把两个框架整和了;以下是主要的步骤

 

一 下载Spring DM必须的包

     下载的url为http://sourceforge.net/projects/springframework/files/spring-osgi/1.0.3/spring-osgi-1.0.3-with-dependencies.zip/download 和 http://nchc.dl.sourceforge.net/project/springframework/spring-osgi/1.0.3/spring-osgi-1.0.3.zip

 

二 解压第一步下载所得文件,把spring DM启动时候必要的Bundle对应的jar包放到Fleix安装目录/bunld目录下,这里所说 

     的必要jar包为  aopalliance.osgi-1.0-SNAPSHOT.jar
                          jcl104-over-slf4j-1.4.3.jar
                          log4j.osgi-1.2.15-SNAPSHOT.jar
                          org.apache.felix.main-1.0.1.jar
                          slf4j-api-1.4.3.jar
                          lf4j-log4j12-1.4.3.jar
                         spring-aop-2.5.1.jar
                         spring-beans-2.5.1.jar
                        spring-context-2.5.1.jar
                        spring-core-2.5.1.jar
                        spring-osgi-core-1.0.3.jar
                       spring-osgi-io-1.0.3.jar
                       spring-osgi-extender-1.0.3.jar

三  修改felix安装目录/conf/config.properties文件,主要目的是使得spring DM必要的Bundle随Felix启动而启动,以

      以下为修改后的文件内容,红色部分为和默认配置不同的地方

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

#
# Framework config properties.
#
org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
 org.osgi.service.packageadmin; version=1.2.0, \
 org.osgi.service.startlevel; version=1.0.0, \
 org.osgi.service.url; version=1.0.0, \
 org.osgi.util.tracker; version=1.3.2 \
 ${jre-${java.specification.version}}

#org.osgi.framework.bootdelegation=sun.*,com.sun.*
#felix.cache.profile=foo
felix.auto.start.1= \
 file:bundle/org.apache.felix.bundlerepository-1.0.3.jar \
 file:bundle/org.apache.felix.shell.tui-1.0.1.jar \
 file:bundle/org.apache.felix.shell-1.0.1.jar  \
  file:bundle/aopalliance.osgi-1.0-SNAPSHOT.jar \
 file:bundle/jcl104-over-slf4j-1.4.3.jar \
 file:bundle/log4j.osgi-1.2.15-SNAPSHOT.jar \
 file:bundle/org.apache.felix.main-1.0.1.jar \
 file:bundle/slf4j-api-1.4.3.jar \
 file:bundle/slf4j-log4j12-1.4.3.jar \
 file:bundle/spring-aop-2.5.1.jar \
 file:bundle/spring-beans-2.5.1.jar \
 file:bundle/spring-context-2.5.1.jar \
 file:bundle/spring-core-2.5.1.jar \
 file:bundle/spring-osgi-core-1.0.3.jar \
 file:bundle/spring-osgi-io-1.0.3.jar \

 file:bundle/spring-osgi-extender-1.0.3.jar

felix.log.level=4
felix.startlevel.framework=1
felix.startlevel.bundle=1
#felix.service.urlhandlers=false

#
# Bundle config properties.
#
org.osgi.service.http.port=8080
osgi.shell.telnet=on
#obr.repository.url=http://bundles.osgi.org/obr/browse?_xml=1&cmd=repository


#
# Java platform package export properties.
#
jre-1.3=, \
 javax.accessibility; \
 javax.naming; \
 javax.naming.directory; \
 javax.naming.event; \
 javax.naming.ldap; \
 javax.naming.spi; \
 javax.rmi; \
 javax.rmi.CORBA; \
 javax.sound.midi; \
 javax.sound.midi.spi; \
 javax.sound.sampled; \
 javax.sound.sampled.spi; \
 javax.swing; \
 javax.swing.border; \
 javax.swing.colorchooser; \
 javax.swing.event; \
 javax.swing.filechooser; \
 javax.swing.plaf; \
 javax.swing.plaf.basic; \
 javax.swing.plaf.metal; \
 javax.swing.plaf.multi; \
 javax.swing.table; \
 javax.swing.text; \
 javax.swing.text.html; \
 javax.swing.text.html.parser; \
 javax.swing.text.rtf; \
 javax.swing.tree; \
 javax.swing.undo; \
 javax.transaction; \
 org.omg.CORBA; \
 org.omg.CORBA_2_3; \
 org.omg.CORBA_2_3.portable; \
 org.omg.CORBA.DynAnyPackage; \
 org.omg.CORBA.ORBPackage; \
 org.omg.CORBA.portable; \
 org.omg.CORBA.TypeCodePackage; \
 org.omg.CosNaming; \
 org.omg.CosNaming.NamingContextPackage; \
 org.omg.SendingContext; \
 org.omg.stub.java.rmi; \
 version="1.3.0"

jre-1.4=, \
 javax.accessibility; \
 javax.crypto; \
 javax.crypto.interfaces; \
 javax.crypto.spec; \
 javax.imageio; \
 javax.imageio.event; \
 javax.imageio.metadata; \
 javax.imageio.plugins.jpeg; \
 javax.imageio.spi; \
 javax.imageio.stream; \
 javax.naming; \
 javax.naming.directory; \
 javax.naming.event; \
 javax.naming.ldap; \
 javax.naming.spi; \
 javax.net; \
 javax.net.ssl; \
 javax.print; \
 javax.print.attribute; \
 javax.print.attribute.standard; \
 javax.print.event; \
 javax.rmi; \
 javax.rmi.CORBA; \
 javax.security.auth; \
 javax.security.auth.callback; \
 javax.security.auth.kerberos; \
 javax.security.auth.login; \
 javax.security.auth.spi; \
 javax.security.auth.x500; \
 javax.sound.midi; \
 javax.sound.midi.spi; \
 javax.sound.sampled; \
 javax.sound.sampled.spi; \
 javax.sql; \
 javax.swing; \
 javax.swing.border; \
 javax.swing.colorchooser; \
 javax.swing.event; \
 javax.swing.filechooser; \
 javax.swing.plaf; \
 javax.swing.plaf.basic; \
 javax.swing.plaf.metal; \
 javax.swing.plaf.multi; \
 javax.swing.table; \
 javax.swing.text; \
 javax.swing.text.html; \
 javax.swing.text.html.parser; \
 javax.swing.text.rtf; \
 javax.swing.tree; \
 javax.swing.undo; \
 javax.transaction; \
 javax.transaction.xa; \
 javax.xml.parsers; \
 javax.xml.transform; \
 javax.xml.transform.dom; \
 javax.xml.transform.sax; \
 javax.xml.transform.stream; \
 org.ietf.jgss; \
 org.omg.CORBA; \
 org.omg.CORBA_2_3; \
 org.omg.CORBA_2_3.portable; \
 org.omg.CORBA.DynAnyPackage; \
 org.omg.CORBA.ORBPackage; \
 org.omg.CORBA.portable; \
 org.omg.CORBA.TypeCodePackage; \
 org.omg.CosNaming; \
 org.omg.CosNaming.NamingContextExtPackage; \
 org.omg.CosNaming.NamingContextPackage; \
 org.omg.Dynamic; \
 org.omg.DynamicAny; \
 org.omg.DynamicAny.DynAnyFactoryPackage; \
 org.omg.DynamicAny.DynAnyPackage; \
 org.omg.IOP; \
 org.omg.IOP.CodecFactoryPackage; \
 org.omg.IOP.CodecPackage; \
 org.omg.Messaging; \
 org.omg.PortableInterceptor; \
 org.omg.PortableInterceptor.ORBInitInfoPackage; \
 org.omg.PortableServer; \
 org.omg.PortableServer.CurrentPackage; \
 org.omg.PortableServer.POAManagerPackage; \
 org.omg.PortableServer.POAPackage; \
 org.omg.PortableServer.portable; \
 org.omg.PortableServer.ServantLocatorPackage; \
 org.omg.SendingContext; \
 org.omg.stub.java.rmi; \
 org.w3c.dom; \
 org.w3c.dom.css; \
 org.w3c.dom.events; \
 org.w3c.dom.html; \
 org.w3c.dom.stylesheets; \
 org.w3c.dom.traversal; \
 org.w3c.dom.views; \
 org.xml.sax; \
 org.xml.sax.ext; \
 org.xml.sax.helpers; \
 version="1.4.0"

jre-1.5=, \
 javax.accessibility; \
 javax.activity; \
 javax.crypto; \
 javax.crypto.interfaces; \
 javax.crypto.spec; \
 javax.imageio; \
 javax.imageio.event; \
 javax.imageio.metadata; \
 javax.imageio.plugins.bmp; \
 javax.imageio.plugins.jpeg; \
 javax.imageio.spi; \
 javax.imageio.stream; \
 javax.management; \
 javax.management.loading; \
 javax.management.modelmbean; \
 javax.management.monitor; \
 javax.management.openmbean; \
 javax.management.relation; \
 javax.management.remote; \
 javax.management.remote.rmi; \
 javax.management.timer; \
 javax.naming; \
 javax.naming.directory; \
 javax.naming.event; \
 javax.naming.ldap; \
 javax.naming.spi; \
 javax.net; \
 javax.net.ssl; \
 javax.print; \
 javax.print.attribute; \
 javax.print.attribute.standard; \
 javax.print.event; \
 javax.rmi; \
 javax.rmi.CORBA; \
 javax.rmi.ssl; \
 javax.security.auth; \
 javax.security.auth.callback; \
 javax.security.auth.kerberos; \
 javax.security.auth.login; \
 javax.security.auth.spi; \
 javax.security.auth.x500; \
 javax.security.sasl; \
 javax.sound.midi; \
 javax.sound.midi.spi; \
 javax.sound.sampled; \
 javax.sound.sampled.spi; \
 javax.sql; \
 javax.sql.rowset; \
 javax.sql.rowset.serial; \
 javax.sql.rowset.spi; \
 javax.swing; \
 javax.swing.border; \
 javax.swing.colorchooser; \
 javax.swing.event; \
 javax.swing.filechooser; \
 javax.swing.plaf; \
 javax.swing.plaf.basic; \
 javax.swing.plaf.metal; \
 javax.swing.plaf.multi; \
 javax.swing.plaf.synth; \
 javax.swing.table; \
 javax.swing.text; \
 javax.swing.text.html; \
 javax.swing.text.html.parser; \
 javax.swing.text.rtf; \
 javax.swing.tree; \
 javax.swing.undo; \
 javax.transaction; \
 javax.transaction.xa; \
 javax.xml; \
 javax.xml.datatype; \
 javax.xml.namespace; \
 javax.xml.parsers; \
 javax.xml.transform; \
 javax.xml.transform.dom; \
 javax.xml.transform.sax; \
 javax.xml.transform.stream; \
 javax.xml.validation; \
 javax.xml.xpath; \
 org.ietf.jgss; \
 org.omg.CORBA; \
 org.omg.CORBA_2_3; \
 org.omg.CORBA_2_3.portable; \
 org.omg.CORBA.DynAnyPackage; \
 org.omg.CORBA.ORBPackage; \
 org.omg.CORBA.portable; \
 org.omg.CORBA.TypeCodePackage; \
 org.omg.CosNaming; \
 org.omg.CosNaming.NamingContextExtPackage; \
 org.omg.CosNaming.NamingContextPackage; \
 org.omg.Dynamic; \
 org.omg.DynamicAny; \
 org.omg.DynamicAny.DynAnyFactoryPackage; \
 org.omg.DynamicAny.DynAnyPackage; \
 org.omg.IOP; \
 org.omg.IOP.CodecFactoryPackage; \
 org.omg.IOP.CodecPackage; \
 org.omg.Messaging; \
 org.omg.PortableInterceptor; \
 org.omg.PortableInterceptor.ORBInitInfoPackage; \
 org.omg.PortableServer; \
 org.omg.PortableServer.CurrentPackage; \
 org.omg.PortableServer.POAManagerPackage; \
 org.omg.PortableServer.POAPackage; \
 org.omg.PortableServer.portable; \
 org.omg.PortableServer.ServantLocatorPackage; \
 org.omg.SendingContext; \
 org.omg.stub.java.rmi; \
 org.omg.stub.javax.management.remote.rmi; \
 org.w3c.dom; \
 org.w3c.dom.bootstrap; \
 org.w3c.dom.css; \
 org.w3c.dom.events; \
 org.w3c.dom.html; \
 org.w3c.dom.ls; \
 org.w3c.dom.ranges; \
 org.w3c.dom.stylesheets; \
 org.w3c.dom.traversal; \
 org.w3c.dom.views; \
 org.xml.sax; \
 org.xml.sax.ext; \
 org.xml.sax.helpers; \
 version="1.5.0"

jre-1.6=, \
 javax.accessibility; \
 javax.activation; \
 javax.activity; \
 javax.annotation; \
 javax.annotation.processing; \
 javax.crypto; \
 javax.crypto.interfaces; \
 javax.crypto.spec; \
 javax.imageio; \
 javax.imageio.event; \
 javax.imageio.metadata; \
 javax.imageio.plugins.bmp; \
 javax.imageio.plugins.jpeg; \
 javax.imageio.spi; \
 javax.imageio.stream; \
 javax.jws; \
 javax.jws.soap; \
 javax.lang.model; \
 javax.lang.model.element; \
 javax.lang.model.type; \
 javax.lang.model.util; \
 javax.management; \
 javax.management.loading; \
 javax.management.modelmbean; \
 javax.management.monitor; \
 javax.management.openmbean; \
 javax.management.relation; \
 javax.management.remote; \
 javax.management.remote.rmi; \
 javax.management.timer; \
 javax.naming; \
 javax.naming.directory; \
 javax.naming.event; \
 javax.naming.ldap; \
 javax.naming.spi; \
 javax.net; \
 javax.net.ssl; \
 javax.print; \
 javax.print.attribute; \
 javax.print.attribute.standard; \
 javax.print.event; \
 javax.rmi; \
 javax.rmi.CORBA; \
 javax.rmi.ssl; \
 javax.script; \
 javax.security.auth; \
 javax.security.auth.callback; \
 javax.security.auth.kerberos; \
 javax.security.auth.login; \
 javax.security.auth.spi; \
 javax.security.auth.x500; \
 javax.security.cert; \
 javax.security.sasl; \
 javax.sound.midi; \
 javax.sound.midi.spi; \
 javax.sound.sampled; \
 javax.sound.sampled.spi; \
 javax.sql; \
 javax.sql.rowset; \
 javax.sql.rowset.serial; \
 javax.sql.rowset.spi; \
 javax.swing; \
 javax.swing.border; \
 javax.swing.colorchooser; \
 javax.swing.event; \
 javax.swing.filechooser; \
 javax.swing.plaf; \
 javax.swing.plaf.basic; \
 javax.swing.plaf.metal; \
 javax.swing.plaf.multi; \
 javax.swing.plaf.synth; \
 javax.swing.table; \
 javax.swing.text; \
 javax.swing.text.html; \
 javax.swing.text.html.parser; \
 javax.swing.text.rtf; \
 javax.swing.tree; \
 javax.swing.undo; \
 javax.tools; \
 javax.transaction; \
 javax.transaction.xa; \
 javax.xml; \
 javax.xml.bind; \
 javax.xml.bind.annotation; \
 javax.xml.bind.annotation.adapters; \
 javax.xml.bind.attachment; \
 javax.xml.bind.helpers; \
 javax.xml.bind.util; \
 javax.xml.crypto; \
 javax.xml.crypto.dom; \
 javax.xml.crypto.dsig; \
 javax.xml.crypto.dsig.dom; \
 javax.xml.crypto.dsig.keyinfo; \
 javax.xml.crypto.dsig.spec; \
 javax.xml.datatype; \
 javax.xml.namespace; \
 javax.xml.parsers; \
 javax.xml.soap; \
 javax.xml.stream; \
 javax.xml.stream.events; \
 javax.xml.stream.util; \
 javax.xml.transform; \
 javax.xml.transform.dom; \
 javax.xml.transform.sax; \
 javax.xml.transform.stax; \
 javax.xml.transform.stream; \
 javax.xml.validation; \
 javax.xml.ws; \
 javax.xml.ws.handler; \
 javax.xml.ws.handler.soap; \
 javax.xml.ws.http; \
 javax.xml.ws.soap; \
 javax.xml.ws.spi; \
 javax.xml.xpath; \
 org.ietf.jgss; \
 org.omg.CORBA; \
 org.omg.CORBA_2_3; \
 org.omg.CORBA_2_3.portable; \
 org.omg.CORBA.DynAnyPackage; \
 org.omg.CORBA.ORBPackage; \
 org.omg.CORBA.portable; \
 org.omg.CORBA.TypeCodePackage; \
 org.omg.CosNaming; \
 org.omg.CosNaming.NamingContextExtPackage; \
 org.omg.CosNaming.NamingContextPackage; \
 org.omg.Dynamic; \
 org.omg.DynamicAny; \
 org.omg.DynamicAny.DynAnyFactoryPackage; \
 org.omg.DynamicAny.DynAnyPackage; \
 org.omg.IOP; \
 org.omg.IOP.CodecFactoryPackage; \
 org.omg.IOP.CodecPackage; \
 org.omg.Messaging; \
 org.omg.PortableInterceptor; \
 org.omg.PortableInterceptor.ORBInitInfoPackage; \
 org.omg.PortableServer; \
 org.omg.PortableServer.CurrentPackage; \
 org.omg.PortableServer.POAManagerPackage; \
 org.omg.PortableServer.POAPackage; \
 org.omg.PortableServer.portable; \
 org.omg.PortableServer.ServantLocatorPackage; \
 org.omg.SendingContext; \
 org.omg.stub.java.rmi; \
 org.omg.stub.javax.management.remote.rmi; \
 org.w3c.dom; \
 org.w3c.dom.bootstrap; \
 org.w3c.dom.css; \
 org.w3c.dom.events; \
 org.w3c.dom.html; \
 org.w3c.dom.ls; \
 org.w3c.dom.ranges; \
 org.w3c.dom.stylesheets; \
 org.w3c.dom.traversal; \
 org.w3c.dom.views; \
 org.w3c.dom.xpath; \
 org.xml.sax; \
 org.xml.sax.ext; \
 org.xml.sax.helpers; \
 version=\"1.6.0\"

 

四 编写服务端和客户端代码,需要留意的是代码和felix没有任何依赖,就和普通的java类一样

    服务端代码

OrderService类

package order;

public interface OrderService {

	public void processOrder();

}

 OrderServiceImpl类

写道
package order.impl;

import order.OrderService;

public class OrderServiceImpl implements OrderService {

public void start() {
System.out.println("Order Service registered");
}

public void stop() {
System.out.println("Order Service stopped");
}

public void processOrder() {
System.out.println("第二版本发布了 id: ORD123") ;
}
}

 客户端代码:

OrderClient类

package order.client;

import order.OrderService;

public class OrderClient {

	private OrderService orderService;

	public void setOrderService(OrderService orderService) {
		this.orderService = orderService;
	}

	public void removeService() {
		this.orderService = null;
	}

	public void start() {
		System.out.println("客户端启动了---");
		orderService.processOrder();
	}

	public void stop() {
		System.out.println("第二版本我想顶人啊---Bundle dds ----dddsstopped");
    }

}

 五 运行两个工程(服务端和客户端)目录下的buildxxx.xml文件打包,文件已经在附件中,在这里不再赘述

 六 把第五步打包所得的jar发布到felix,和发布普通的bundle没有任何区别,在在这里不再赘述!

七 启动第六步安装的两个bundle就可以看到效果了 (felix控制台输入为:第二版本发布了 id: ORD123,这就说明程序运行正确了)

0
1
分享到:
评论
1 楼 surpass_li 2010-05-21  
谢谢分享,参考这篇文章终于调通了order spring for felix-framework-2.0.5.
另:你在web应用中使用过吗?

相关推荐

    osgi选型比较 实例Equinox、Apache Felix与Spring DM

    3. **Spring DM (Spring OSGi)**:SpringSource(现在是VMware的一部分)开发的OSGi整合框架,使得Spring框架可以无缝集成到OSGi环境中。Spring DM提供了在OSGi环境中管理和配置服务的能力,使得开发者能使用Spring...

    OSGI整合Spring、Mybatis、Spring MVC实现一个登录应用案例

    在这个案例中,我们将探讨如何整合OSGI、Spring、Mybatis以及Spring MVC来实现一个登录应用。这个教程旨在帮助开发者理解如何在OSGI环境中集成这些流行的Java技术,以构建灵活且可扩展的应用程序。 首先,我们需要...

    Spring与OSGI整合 计算器例子(转) +附整合代码和spring-osgi核心jar

    整合Spring和OSGi可以利用OSGi的模块化特性,使得Spring应用更加灵活和可扩展。 首先,我们需要了解Spring在OSGi环境中的工作方式。Spring的组件(如Bean)可以在OSGi服务中注册和发现,这样就可以实现服务之间的...

    OSGI入门和整合Spring

    学习OSGI入门和整合Spring,对于开发复杂的企业级应用,或者想要提升系统灵活性和可维护性的开发者来说,是非常有价值的。通过理解OSGI的模块化机制和Spring的依赖注入原理,可以构建出更加高效和可扩展的Java应用。

    OSGI资料,OSGI进阶,OSGI实战,OSGI入门和整合Spring

    《OSGI入门和整合Spring》则关注OSGI与Spring框架的结合,主要讨论: 1. **Spring与OSGI集成原理**:Spring的bean管理如何与OSGI服务机制相结合,实现更灵活的依赖注入。 2. **Declarative Services(DS)**:利用...

    spring-dm-osgi整合jar包

    整合Spring DM和OSGi的过程通常包括以下步骤: 1. **配置OSGi容器**:设置OSGi容器(如Equinox或Felix),并确保其正确运行。 2. **创建OSGi服务**:定义服务接口和实现,并将它们打包为OSGi bundle。 3. **配置...

    springdm整合hibernater

    在本文中,我们将深入探讨如何在OSGi环境中整合Spring-DM和Hibernate,以实现一个动态的、可扩展的持久化解决方案。Spring-DM(现在被称为Spring OSGi)是Spring框架在OSGi容器中的扩展,它允许我们充分利用OSGi的...

    struts-2.1.8.1(spring与struts整合)

    spring与struts整合所需的jar包。 自己老项目中的jar,可以运行。 jar名称概要如下: struts2-spring-plugin-2.1.8.1.jar commons-****.jar org.apache.felix.****.jar spring-***.jar struts2-***.jar

    osgi spring实例

    至于压缩包内的"整合代码原版",这可能是一个完整的项目源码,包括了OSGi和Spring的配置文件、服务定义、bundle实现、启动脚本等。开发者可以通过分析这些代码,了解如何在OSGi环境下配置和管理Spring应用,以及如何...

    Spring DM集成Strtus2(一)

    Spring DM是Spring框架的一个扩展,它为在OSGi容器(如Apache Felix或Equinox)中运行的Java应用程序提供了服务管理和生命周期管理。OSGi是一种模块化系统,可以动态地部署、启动、更新和卸载Java模块,使得应用程序...

    spring_dm包

    Spring DM在Spring 3.0版本之后被Spring OSGi Integration取代,后者进一步整合了Spring框架与OSGi的集成。随着时间的推移,Spring社区推荐使用Spring Boot和Spring Framework的模块化特性来构建和管理现代的微服务...

    eclipse下构建spring与OSGI项目

    Eclipse本身就基于OSGi框架构建,因此在Eclipse中整合Spring和OSGi相对容易。为了构建这样的项目,我们需要: 1. 安装相关插件:首先确保Eclipse安装了Spring和OSGi相关的插件,如Spring Tools Suite (STS) 和...

    Spring OSGi 入门.pdf

    Spring OSGi 与 Spring 框架的整合 - **Bean 容器**: Spring OSGi 使用 OSGi 服务作为 Spring Bean,实现服务的动态发现和依赖注入。 - **配置管理**: OSGi 服务注册表可以被 Spring 配置,允许 Spring 配置动态...

    spring dm cxf

    标题 "spring dm cxf" 暗示了我们要探讨的是Spring Dynamic Modules (Spring DM) 和Apache CXF在OSGi环境中的整合与应用。Spring DM是Spring框架在OSGi服务环境中运行的一个扩展,它允许开发者利用Spring的优势来...

    基于osgi整合ssm框架注解开发

    同时,需要使用支持OSGi的Spring DM(Dependency Manager)或Apache Felix等工具来管理和部署SSM捆绑。 **6. 注解开发** 在SSM框架中,注解可以显著减少XML配置,提高开发效率。例如,SpringMVC的`@Controller`、`...

    osgi-tutorial.zip

    本教程将探讨如何在OSGi环境中利用Blueprint整合Spring框架进行企业级应用开发。 首先,我们需要了解OSGi的核心概念。OSGi的核心是其模块系统,它将Java类库划分为独立的模块,称为"bundle"。每个bundle都包含自己...

Global site tag (gtag.js) - Google Analytics