设为首页 收藏本站
查看: 824|回复: 0

[经验分享] apache felix 4.0.3 + maven 3 + eclipse 4.2 配置, 开发, 运行, 调试

[复制链接]

尚未签到

发表于 2017-1-13 09:21:22 | 显示全部楼层 |阅读模式
  1. 新建一个 Maven project, 如下图所示.
DSC0000.jpg

  2. 修改 pom.xml 文件如下
   
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.sia</groupId>
    <artifactId>FelixLauncher_4.0.3</artifactId>
    <version>4.0.3</version>
   
   
    <properties>
   
      <felix.bundlerepository.version>1.6.6</felix.bundlerepository.version>
      <felix.gogo.command.version>0.12.0</felix.gogo.command.version>
      <felix.gogo.shell.version>0.10.0</felix.gogo.shell.version>
      <felix.gogo.runtime.version>0.10.0</felix.gogo.runtime.version>
      
      <felix.framework.version>4.0.3</felix.framework.version>
      <org.osgi.compendium.version>4.2.0</org.osgi.compendium.version>
    </properties>
   
    <build>
    <!--删除 bundle 文件夹  -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>2.4.1</version>
          <configuration>
            <filesets>
              <fileset>
                <directory>bundle</directory>
              </fileset>
            </filesets>
          </configuration>
        </plugin>
        
   <!-- 往 bundle 里添加东西  -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.6</version>
          <executions>
            <execution>
              <id>copy</id>
              <phase>generate-resources</phase>
              <goals>
                <goal>copy</goal>
              </goals>
              <configuration>
                <artifactItems>
                
                <!-- 添加 gogo.command -->
                  <artifactItem>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.gogo.command</artifactId>
                    <version>${felix.gogo.command.version}</version>
                  </artifactItem>
                  
                  <!-- 添加 gogo.runtime -->
                  <artifactItem>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.gogo.runtime</artifactId>
                    <version>${felix.gogo.runtime.version}</version>
                  </artifactItem>
                  
                  <!-- 添加 gogo.shell -->
                  <artifactItem>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.gogo.shell</artifactId>
                    <version>${felix.gogo.shell.version}</version>
                  </artifactItem>
                  
                  <!-- 添加 bundlerepository -->
                  <artifactItem>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.bundlerepository</artifactId>
                    <version>${felix.bundlerepository.version}</version>
                  </artifactItem>
                  
                  <!-- 添加 org.osgi.compendium -->
                  <artifactItem>
                    <groupId>org.osgi</groupId>
                    <artifactId>org.osgi.compendium</artifactId>
                    <version>${org.osgi.compendium.version}</version>
                  </artifactItem>                                
                </artifactItems>
                <outputDirectory>bundle</outputDirectory>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
   
    <dependencies>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.main</artifactId>
        <version>${felix.framework.version}</version>
      </dependency>
   
      <dependency>
        <groupId>org.ops4j.pax.url</groupId>
        <artifactId>pax-url-assembly</artifactId>
        <version>1.3.3</version>
      </dependency>
    </dependencies>  
  </project>
  3. 在项目上点右键, 选择 Run as -> Maven install
  应该显示成功 (注意: 是要联网的, 因为会自动从网上下东西.)
  4. 添加配置文件
  (1) 项目下新建一个文件夹 conf, 在 conf 下面新建一个文件 config.properties, 如下图所示

  (2) 文件里面输入如下内容

  felix.auto.deploy.action=install,start
  felix.log.level=1
   
  org.osgi.framework.storage.clean=onFirstInit
  5. 菜单, run, run configuration, 选择左侧的 Java application, 配置如下图所示

  run configruation 的 名字设为 FelixLauncher_4.0.3, 主函数 选 org.apache.felix.main.Main (要 maven install 之后, 才可以选, install 时, 会从网上下 载 pom 里面声明的东西, 其中就包括了 felix framework, 里面有主类)
  6. 上图中, 选 Arguments tab, 输入 参数 如下图所示

  -Djava.protocol.handler.pkgs=org.ops4j.pax.url
  6. 点击 Apply, 然后, 就可以 run 了, 结果如下图所示

  ===========================
  7. 新建一个新的 Maven project
  配置参数为
  <groupId>cn.sia</groupId>
  <artifactId>HelloWorld</artifactId>
  <version>1.0.0</version>
  <name>hello-world</name>
  <description>This is a hello world program.</description>
  8. 新建完后, 修改 pom.xml 如下
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.sia</groupId>
  <artifactId>HelloWorld</artifactId>
  <version>1.0.0</version>
  <name>hello-world</name>
  <description>This is a hello world program.</description>
  <!-- 这句很重要!!! -->
  <packaging>bundle</packaging>
   
  <properties>
  <felix.maven-bundle-plugin.version>2.3.7</felix.maven-bundle-plugin.version>
  </properties>
   
  <build>
  <plugins>
  <plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <version>2.3.7</version>
  <extensions>true</extensions>
  <configuration>
  <instructions>
  <Bundle-Category>sia</Bundle-Category>
  <Bundle-SymbolicName>${project.name}</Bundle-SymbolicName>
  <Bundle-Name>${project.name}</Bundle-Name>
  <Bundle-Version>${project.version}</Bundle-Version>
  <Bundle-Activator>cn.sia.helloworld.activator.Activator</Bundle-Activator>
  <Private-Package>cn.sia.helloworld.activator</Private-Package>
  </instructions>
  </configuration>
  </plugin>
   
  <plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <inherited>true</inherited>
  <configuration>
  <source>1.6</source>
  <target>1.6</target>
  </configuration>
  </plugin>
  </plugins>
  </build>
   
  <dependencies>
  <dependency>
  <groupId>org.osgi</groupId>
  <artifactId>org.osgi.core</artifactId>
  <version>4.2.0</version>
  </dependency>
  </dependencies>
  </project>
  9. 新建一个 package, 名字为 cn.sia.helloworld.activator, 里面新建一个类, 名字为 Activator, 输入内容如下
  package cn.sia.helloworld.activator;
   
  import org.osgi.framework.BundleActivator;
  import org.osgi.framework.BundleContext;
   
  public class Activator implements BundleActivator {
   
  public void start(BundleContext context) throws Exception {
  System.out.println("In hello world activator start.");
  }
   
  public void stop(BundleContext context) throws Exception {
  System.out.println("In hello world activator stop.");
  }
   
  }
  10. 在项目上点右键, run as -> maven install, 会 build 成功, 如下图所示

  11. 修改刚才 config.properties, 修改完后的内容为

  felix.auto.deploy.action=install,start
  felix.log.level=1
   
  org.osgi.framework.storage.clean=onFirstInit
  felix.auto.start.1 = \
   assembly:/G:/study/java/OSGi-workspace/workspace-felix/HelloWorld/target/classes
   
  12. 运行 FelixLauncher_4.0.3, 结果如下

   
  13. 调试 HelloWorld
   在 Activator 里添加一个断点, 如下图所示

  14. Debug->FelixLauncher_4.0.3, 

  出现

  点 Edit Source Lookup Path...

  点 add

  选 java project,

  选 HelloWorld, 点 ok,点 ok, 就找到了, 如下图

  按 F6 step over, 按 F8 Resume, 再输入 stop 6, start 6, 又会进入断点
  15. 生成的 HelloWorld-1.0.0.jar 文件里的 MANIFEST 文件如下

  Manifest-Version: 1.0
  Bnd-LastModified: 1357974254520
  Build-Jdk: 1.6.0_02
  Built-By: chenxing263
  Bundle-Activator: cn.sia.helloworld.activator.Activator
  Bundle-Category: sia
  Bundle-Description: This is a hello world program.
  Bundle-ManifestVersion: 2
  Bundle-Name: hello-world
  Bundle-SymbolicName: hello-world
  Bundle-Version: 1.0.0
  Created-By: Apache Maven Bundle Plugin
  Export-Package: cn.sia.helloworld.activator;uses:="org.osgi.framework";v
   ersion="1.0.0"
  Import-Package: org.osgi.framework;version="[1.5,2)"
  Tool: Bnd-1.50.0

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-327773-1-1.html 上篇帖子: 关于使用Apache 的common-email-1.2.jar 包写发送Email 下篇帖子: Apache与Tomcat整合实现基于域名访问单ip多Web站点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表