SpringDM笔记7-开发SpringDM Bundle

基于Maven创建:

1. mvn archetype:create -DgroupId=com.manning.sdmia -DartifactId=SpringDM-Sample

    mvn eclipse:eclipse

2. Package:Felix Bundle Plugin

    pom.xml:

    ...

    <build>
      <plugins>
        <plugin>
           <groupId>org.apache.felix</groupId>
           <artifactId>maven-bundle-plugin</artifactId>
           <version>2.3.4</version>
           <extensions>true</extensions>
        </plugin>

        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.2</version>
           <configuration>

              <source>1.6</source>
              <target>1 .6</target>
           </configuration>
         </plugin>

     </plugins>
   </build>

   执行命令:mvn package

3. 部署安装:

    install file:///D:/sts_workspace/SpringDM-Sample/target/SpringDM-Sample-1.0.0.jar

4. 测试代码开发

    The Spring DM integration test framework provides a handy abstract

    class(AbstractConfigurableBundleCreatorTests) that provides hooks for the OSGi container  

    configuration, and this test uses it as its parent class。

    例如:

    public class SpringDmSampleTest extends AbstractConfigurableBundleCreatorTests {

    public void testIntergration() {
        boolean bundleIsHereAndStarted = false;
        for (Bundle bundle : bundleContext.getBundles()) {
            if ("com.manning.sdmia.SpringDM-Sample".equals(bundle.getSymbolicName()) &&  

                bundle.getState() == Bundle.ACTIVE) {
                bundleIsHereAndStarted = true;
                break;
            }
        }
        assertTrue("SpringDM-Sample is not installed or activated!",bundleIsHereAndStarted);
    }

    /*
     * SpringDM会为测试提供OSGi容器及依赖的JAR,若要添加扩展的JAR则需要复写该方法;
     * 同时若希望被扩展的Bundle能被安装并启动,还需要提供Maven标示符:grouoId,
     * artifactId,version。
    */

    @Override
     protected String[] getTestBundlesNames() {
        return new String[]{"com.manning.sdmia,SpringDM-Sample,1.0.0"};
    }

    /*
     * 若希望在测试周期中SpringDM测试框架能自动安装客制化的Bundle,需要复写该方法;
     * 需指定一个地址路径指定所有希望的测试的周期中能被安装在OSGi容器中的
    */

    @Override
    protected Resource getTestingFrameworkBundlesConfiguration() {
        return new InputStreamResource(SpringDmSampleTest.class.getResourceAsStream("boot-

        bundles.properties"));
    }
  }

  其中文件boot-bundles.properties:

# versioning
ignore.junit.version=4.8.1
ignore.log4j.version=1.2.15

ignore.spring.version=3.0.5.RELEASE
ignore.spring.osgi.version=2.0.0.M1
ignore.slf4j.version=1.6.1
ignore.asm.version=2.2.3
ignore.aopalliance.version=1.0.0

# groupIds
ignore.spring.groupId=org.springframework
ignore.spring.osgi.groupId=org.springframework.osgi
ignore.slf4j.groupId=org.slf4j

# junit
org.junit,com.springsource.org.junit,${ignore.junit.version}=
# log4j
org.apache.log4j,com.springsource.org.apache.log4j,${ignore.log4j.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,${ignore.aopalliance.version}=
# asm
org.objectweb.asm,com.springsource.org.objectweb.asm,${ignore.asm.version}=

# spring libs
${ignore.spring.groupId},org.springframework.asm,${ignore.spring.version}=
${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.expression,${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}=

5. 启动容器

    java -jar org.eclipse.osgi-3.5.1.R35x_v20090827.jar -console

6. 案例代码

    见附件:SpringDM-Sample.rar

猜你喜欢

转载自springsfeng.iteye.com/blog/1149243
今日推荐