`
nbaertuo
  • 浏览: 76053 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

felix学习二-发布classpath为bundle

阅读更多

    这次我们需要将classpath中的jar发布成bundle。

    我们在Main中找到main这个启动函数,同样可以发现loadSystemProperties这个配置加载函数,他负责加载config.properties中的felix一个配置属性。其中felix.auto.start.1是bundle物理路径的配置参数。如果我们想启动某一个bundle可以通过修改该属性值实现。现在我们要做的是自动让eclipse工程中classpath里面的jar发布为felix中的bundle。实现也是考虑修改felix.auto.start.1的值。所以我们在loadSystemProperties方法后面增加一些代码,如下:

 

// jar
  String jarBundles = (String) props.get("felix.auto.start.1");

  String[] classpathJars = System.getProperty("java.class.path").split(
    ";");
  for (String location : classpathJars) {

   if (!location.contains("test")) {
    String jarName = location
      .substring(location.lastIndexOf("\\") + 1);
    if (jarName.indexOf("jar") > 0) {
      if (jarName.contains("org.apache.felix.framework")) {
      continue;
     }
     if (!jarBundles.contains(jarName)) {
      location.replaceAll("/", "\\");
      jarBundles = jarBundles + " file:" + location;
     }
    } else {
     // 文件夹方式
     File manifestFile = new File(location+ "/META-INF/Manifest.mf");
     if (manifestFile.exists()) {
      jarBundles = jarBundles + " reference:file:" + location;
     }
    }

   }
  }

  props.setProperty("felix.auto.start.1", jarBundles);

 

现在我们可以将classpath中的jar和工程都发布为bundle啦。可以随便写一个测试用例。在main的pom.xml中添加一个依赖。启动完后ps一下你会发现这个符合bundle的依赖已经发布成bundle啦。

 

  附上修改后的Main.java。

分享到:
评论

相关推荐

    SpringDM笔记7-开发SpringDM Bundle

    - 创建一个名为MANIFEST.MF的元数据文件,声明Bundle的元信息,如Bundle-SymbolicName、Bundle-Version等,并指定Bundle-ClassPath和Import-Package来指示依赖的其他模块。 - 编写Spring配置文件,定义Bundle中的...

    Felix_OSGi实作

    总的来说,OSGi与Felix的结合为Java开发者提供了一种强大而灵活的方式,以模块化的方式进行应用开发。通过动态管理服务和模块的生命周期,Felix允许应用在不停机的状态下进行更新和维护,这在需要高可用性和弹性的...

    Spring OSGI 快速入门中文教程

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

    OSGI study

    10. **Bundle-ClassPath**: 指定bundle中的类路径信息,可以包含多个条目,如主class目录及依赖的库。 #### 五、常见问题与解决方法 在学习OSGi的过程中可能会遇到一些常见的问题,比如编译错误。这些问题通常与...

    spring dm in action sample chapter6

    - **Manifest Headers**: Populate the manifest file with appropriate headers such as `Bundle-SymbolicName`, `Bundle-Version`, `Export-Package`, and `Import-Package`. These headers define the bundle's ...

    eclipse下构建spring与OSGI项目

    在项目中定义bundle的元数据,包括导出和导入的包,以及Bundle-ClassPath等。 接着,引入Spring框架。这通常需要添加Spring的jar文件到项目的类路径中,并在bundle的MANIFEST.MF文件中声明对Spring的依赖。如果使用...

    Example.rar

    4. **.classpath**:这是一个Eclipse项目文件,包含了项目的类路径信息,定义了源代码和库的位置,用于构建和运行Java项目。编辑此文件可以调整项目的依赖关系。 5. **.fatjar**:通常,".fatjar"或"uberjar"是一个...

    Equinox开发OSGi应用程序

    3. **Apache Felix**:这是一个由Apache基金会支持的开源OSGi框架,为开发者提供了标准的服务和一些有趣的附加功能。 #### 编写第一个OSGi应用程序 下面将详细介绍如何使用Equinox框架开发一个简单的OSGi应用程序...

    ANT_build基本格式

    例如,Maven/Ivy用于依赖管理,JUnit用于单元测试,Felix/Maven Bundle Plugin用于OSGi应用程序的打包。 10. **构建文件结构** 一个标准的`build.xml`文件通常会有明确的结构,包括头部声明、属性定义、任务定义、...

Global site tag (gtag.js) - Google Analytics