`
非飞
  • 浏览: 80579 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

手工创建Spring Osgi Bundle

    博客分类:
  • Java
阅读更多

    之前写了一个篇如何使用Spring提供的Maven Archetype来自动化创建一个Spring Osgi Bundle项目。而在实际的开发过程中,发现自己并不是很喜欢这中方式,总是觉得有些地方会失去控制。

    举个很简单的例子,如果使用手动编辑MANIFEST.MF文件来维护Import-Package和Import-Bundle,那么需要注意一定要将Import-Bundle放在Import-Package之前,否则在使用mvn org.apache.felix:maven-bundle-plugin:manifest时,无法正确的生成MANIFEST.MF文件。生成的 MANIFEST.MF文件中没有Import-Bundle项。

    为了更加好的掌控项目,因此在实际开发过程中,我采用了手工创建和维护项目的方法。下面简单的说明一下创建项目的过程:

  1. 通过maven-archetype-quickstart创建一个Maven管理的项目。
    $mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart                     
  2. 创建必需的文件与目录
    $cd /path/to/your/project                                                                                                                    
    $mkdir src/main/resources                                                                                                                
    $mkdir src/main/resources/META-INF                                                                                            

    $mkdir src/main/resources/META-INF/spring                                                                                
    $touch src/main/resources/META-INF/MANIFEST.MF                                                                 
  3. 编辑${your.project.path}/pom.xml文件
    • 添加springsource的repository,参见How do I configure a Maven build to work with the repository?
      	<!-- ================================================ -->
      	<!--            Repository Configuration                                                         -->
      	<!-- ================================================ -->
      
      	<repositories>
      		<repository>
      			<id>com.springsource.repository.bundles.release</id>
      			<name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
      			<url>http://repository.springsource.com/maven/bundles/release</url>
      		</repository>
      		<repository>
      			<id>com.springsource.repository.bundles.external</id>
      			<name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
      			<url>http://repository.springsource.com/maven/bundles/external</url>
      		</repository>
      		<repository>
      			<id>com.springsource.repository.libraries.release</id>
      			<name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
      			<url>http://repository.springsource.com/maven/libraries/release</url>
      		</repository>
      		<repository>
      			<id>com.springsource.repository.libraries.external</id>
      			<name>SpringSource Enterprise Bundle Repository - External Library Releases</name>
      			<url>http://repository.springsource.com/maven/libraries/external</url>
      		</repository>
      	</repositories>
       
    • 指定打包时需要使用的MANIFEST.MF,参见Adding OSGi metadata to existing projects without changing the packaging type
      	<build>
      		<plugins>
      			<plugin>
      				<artifactId>maven-jar-plugin</artifactId>
      				<configuration>
      					<archive>
      						<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
      					</archive>
      				</configuration>
      			</plugin>
      			<plugin>
      				<groupId>org.apache.felix</groupId>
      				<artifactId>maven-bundle-plugin</artifactId>
      				<executions>
      					<execution>
      						<id>bundle-manifest</id>
      						<phase>process-classes</phase>
      						<goals>
      							<goal>manifest</goal>
      						</goals>
      					</execution>
      				</executions>
      			</plugin>
      		</plugins>
      	</build>
       
  4. 完成

2
1
分享到:
评论

相关推荐

    spring osgi相关资源

    1. Spring DM是Spring对OSGi服务的扩展,提供了一种声明式的方式来管理OSGi Bundle中的Spring应用上下文。它允许开发者使用熟悉的Spring配置来定义服务和引用,简化了OSGi环境下的应用开发。 2. 自动化服务注册和...

    Spring OSGi 入门.rar

    2. 创建Spring OSGi Bundle:使用Spring的osgibundle.xml配置文件,定义bundle的元数据和导出/导入的包。也可以使用Spring的工具,如SpringSource Tool Suite,来简化这个过程。 3. 配置Spring Bean:在bundle中...

    Spring OSGI 快速入门中文教程

    创建Spring OSGi Bundle** - **定义Bundle Classpath**:指定Bundle所需的类路径。 - **编写Spring配置**:创建Spring配置文件,定义bean和服务。 - **暴露服务**:使用@Service或@Component注解标记服务,通过...

    OSGI bundle

    在OSGI环境中,我们可以创建专门处理用户管理的服务,这些服务可以作为独立的bundle发布和消费。例如,`online-1.0.0.jar`可能就是一个实现了用户管理功能的bundle,它提供了API供其他bundle调用,以实现用户的增删...

    spring-osgi.jar及其依赖包

    在实际应用中,创建Spring OSGi bundle通常涉及以下步骤: 1. **创建bundle项目**:使用如BndTools这样的工具,或者直接使用Maven或Gradle的OSGi插件,来设置bundle的MANIFEST.MF文件,定义bundle的导出和导入包。 ...

    spring-osgi-1.2.1.rar

    - 提供的示例程序可能包含了如何创建和配置Spring OSGi bundle,以及如何在OSGi容器中运行和交互的示例代码。 - 通过学习这些示例,开发者可以快速掌握Spring OSGi的基本用法和最佳实践。 8. **Spring OSGi的应用...

    spring osgi 中文

    ### Spring OSGi 中文知识点概述 #### 一、Spring框架与OSGi的结合 **Spring框架**是一个领先的全栈Java/JEE应用框架,它提供了一个轻量级的容器,支持依赖注入、面向切面编程(AOP)以及可插拔的服务抽象等功能。这...

    在Eclipse RCP中应用Spring OSGI 管理bean(一)

    4. **创建Spring Extension Factory**:在Eclipse RCP中,你需要创建一个SpringExtensionFactory,这是一个特殊的工厂类,负责从OSGi服务中获取Spring配置并实例化Bean。 5. **注册OSGi服务**:将...

    基于Eclipse的Equinox框架开发OSGi Bundle应用

    在Java世界中,OSGi(Open Services Gateway Initiative)是一种模块化系统,它允许开发者创建可独立更新和依赖管理的模块,即Bundle。Eclipse的Equinox是实现OSGi规范的一个流行实现。这篇博文将深入探讨如何使用...

    SpringDM笔记7-开发SpringDM Bundle

    创建SpringDM Bundle通常涉及以下步骤: - 引入必要的OSGi和SpringDM库。 - 创建一个名为MANIFEST.MF的元数据文件,声明Bundle的元信息,如Bundle-SymbolicName、Bundle-Version等,并指定Bundle-ClassPath和Import-...

    基于EQUINOX的 OSGI BUNDLE 运行例子

    通过这个例子,学习者可以了解OSGi Bundle的结构,如何在EQUINOX上部署和管理它们,以及如何使用Eclipse作为开发工具来创建和调试OSGi应用。这涉及到理解Bundle的生命周期、MANIFEST.MF文件的编写、Eclipse插件的...

    spring-osgi-1.2.0-rc1-with-dependencies.zip

    - **Spring Bundle Context**:它是Spring与OSGi之间的桥梁,允许Spring应用访问OSGi服务并参与OSGi事件处理。 5. **使用场景** Spring OSGi适用于大型企业级应用,尤其是那些需要高可扩展性和动态部署能力的系统...

    Eclipse RCP与Spring OSGi技术详解与最佳实践

    《Eclipse RCP与Spring OSGi:技术详解与最佳实践》由资源的Eclipse专家亲自执笔,并得到了Eclipse官方技术社区的强烈推荐,权威性毋庸置疑!内容全面,系统讲解了利用Eclipse RCP和Spring OSGi开发大规模Java应用的...

    Spring OSGi 入门.pdf

    **Spring OSGi 入门** Spring OSGi 是 Spring 框架与开放服务网关规范(OSGi)的结合,它为基于 Java 的应用程序...通过理解 OSGi 的核心概念和 Spring OSGi 的集成方式,我们可以创建更灵活、更易于维护的软件系统。

    OSGI应用中整合Spring、Mybatis、Spring MVC案例

    1. 创建OSGI bundle,包含Spring配置和Mybatis配置。 2. 实现OSGI服务接口,例如,为Spring的Bean和Mybatis的SqlSessionFactory注册服务。 3. 配置Pax Web或类似的Servlet容器,以支持OSGI bundle中的Spring MVC应用...

    OSGI bundle change listener

    在OSGi框架中,你可以通过实现`org.osgi.framework.BundleListener`接口来创建一个bundle改变监听器。这个接口定义了一个方法`bundleChanged(BundleEvent event)`,每当bundle的状态发生变化时,OSGi框架就会调用这...

    osgi spring实例

    2. **打包Spring应用为OSGi bundle**:将Spring应用的类和依赖打包成遵循OSGi规范的bundle,每个bundle代表一个模块。 3. **声明服务和依赖**:在MANIFEST.MF文件中声明bundle提供的服务和依赖其他服务。 4. **使用...

    spring osgi 规范 中文版

    Spring OSGi将bundle与应用上下文关联起来:每个激活的bundle可以包含一个Spring应用上下文,负责在bundle内创建、配置、组装和装饰对象(bean)。部分bean可以被导出为OSGi服务,供其他bundle使用,同时,bean也...

    OSGISpring OSGISpring

    4. **依赖注入(DI)**:Spring的DI特性可以在OSGI环境中工作,使得bundle之间的依赖关系可以通过配置来管理,而不是硬编码。这样增加了代码的可测试性和可维护性。 5. **动态部署**:OSGI环境支持动态部署和更新,...

Global site tag (gtag.js) - Google Analytics