登录
  • 欢迎访问悠扬的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站😉

玩转OSGI-ApacheFelix(二)IDEA

Apache Felix 悠扬 174次浏览 已收录 1个评论

1.准备工作

      自己去官方下载,或者直接下载我第一篇文章中配置好的felix项目,自己下载的话比较麻烦,可能需要很多次进行尝试,包的版本不对,无法启动,懒得尝试或者想开箱即用的兄弟请移步到:

  1. 我的第一篇文章进行下载:点击连接
  2. 自己去官方下载:点击连接

2.下载配置idea osgi插件

玩转OSGI-ApacheFelix(二)IDEA

玩转OSGI-ApacheFelix(二)IDEA

3.新建两个maven项目

需要源码的去我上面的连接去下载一下,在上面

felix-clinet bundle

package com.nxhz.felix.client;

import com.nxhz.felix.server.Hello;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;

/**
 * @author jierui
 * @package PACKAGE_NAME
 * @date 2022/7/13-9:33
 * @description:
 */
public class ClientBundleActivator implements BundleActivator {

    @Override
    public void start(BundleContext ctx) throws Exception {
        System.out.println("----------------hello client start---------------------");
        ServiceReference ref = ctx.getServiceReference(Hello.class.getName());
        if (ref != null) {
            Hello hello = null;
            try {
                hello = (Hello) ctx.getService(ref);
                if (hello != null){
                    hello.sayHello();
                }else{
                    System.out.println("Service:Hello---object null");
                }

            } catch (RuntimeException e) {
                e.printStackTrace();
            } finally {
                ctx.ungetService(ref);
                hello = null;
            }
        } else {
            System.out.println("Service:Hello---not exists");
        }
        System.out.println("----------------hello client end---------------------");
    }

    @Override
    public void stop(BundleContext bundleContext) throws Exception {
        System.out.println("stop Service:Hello");
    }
}

felix-server bundle

package com.nxhz.felix;

import com.nxhz.felix.server.Hello;
import com.nxhz.felix.server.impl.IHelloImpl;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

import java.util.ArrayList;
import java.util.List;

/**
 * @author jierui
 * @package com.nxhz.felix
 * @date 2022/7/13-9:51
 * @description:
 */
public class ServerBundleActivator implements BundleActivator {


    private List<ServiceRegistration> registrations = new ArrayList<ServiceRegistration>();

    private static BundleContext context;

    static BundleContext getContext() {
        return context;
    }

    @Override
    public void start(BundleContext bundleContext) throws Exception {
        ServerBundleActivator.context = bundleContext;
        System.out.println("----------------server start---------------------");
        //注册hello接口中的服务
        registrations.add(bundleContext
                .registerService(Hello.class.getName(), new IHelloImpl(), null));
        System.out.println("----------------server end---------------------");
    }

    @Override
    public void stop(BundleContext bundleContext) throws Exception {
        ServerBundleActivator.context = null;

        for (ServiceRegistration registration : registrations) {
            System.out.println("unregistering: " + registration);
            registration.unregister();
        }
    }
}

4.配置idea osgi debug

4.1新建一个Run/Debug 启动选择OSGI Bundles

玩转OSGI-ApacheFelix(二)IDEA

4.2 配置OSGI Project Structure

玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA

client manifest

Export-Packag: com.nxhz.felix
Import-Package: org.osgi.framework,com.nxhz.felix.server;version="1.0.4"

server manifest

玩转OSGI-ApacheFelix(二)IDEA

玩转OSGI-ApacheFelix(二)IDEA 

Export-Package: com.nxhz.felix.server;version="1.0.4"
Import-Package: org.osgi.framework

4.3 配置启动debug

玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA

5.idea配置felix web console 

访问地址:http://localhost:8080/system/console/bundles/

用户名密码:admin/admin

我其实没有配置密码,需要的可以自己修改

玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA

玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA玩转OSGI-ApacheFelix(二)IDEA

 


版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明玩转OSGI-ApacheFelix(二)IDEA
喜欢 (1)
支付宝[]
分享 (0)
悠扬
关于作者:
10年以上工作经验,从事2年微服务架构搭建工作,有大数据处理相关工作经验,使用spring全家桶包括:Spring,SpringBoot,SpringCloud 数据层组件服务使用SpringDataJpa,Mybatis以及其他第三方组件Sharding-JDBC,Sharding-Proxy分库分表。熟悉微服务,服务降级,限流,分流,做过项目源码修改,有cat,apollo,nacos使用经验,有Lostash,Elasticsearch,kibana,mysqlMHA生产实践经验,使用开源代码Apache Sarding项目,修改源码支持mysql分库分表使用年月日小时分库分表,docker做集群服务,Jekins做项目发布,GitLab做项目管理,使用docker容器部署,熟悉消息队列RabbitMQ,Kafka,ActiveMQ。RuoYi-Vue-Atomikos项目开源加入生态圈组件,项目支持分布式事务,界面添加多数据源,数据源动态配置,切面切换,多数据源事务支持,支持区域数据源配置,用于区域数据切分,数据层次分库。项目地址:https://gitee.com/zsiyang/ruoyi-vue-atomikos
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽