OSGI 获取引用service


public class ServiceUtil {

 
 
 public static <T> T getService(String className) {
  ServiceReference serviceRef = AppUtil.BUNDLECONTEXT
    .getServiceReference(className);
  Object serviceObject = AppUtil.BUNDLECONTEXT.getService(serviceRef);
  return (T) serviceObject;
 }

 
 public static <T> List<T> getServices(String className) {
  List<T> result = new ArrayList<T>();
  try {
   ServiceReference[] serviceRefs = AppUtil.BUNDLECONTEXT
     .getServiceReferences(className, null);
   for (ServiceReference serviceRef : serviceRefs) {
    Object serviceObject = AppUtil.BUNDLECONTEXT
      .getService(serviceRef);
    result.add((T) serviceObject);
   }
  } catch (InvalidSyntaxException e) {
   e.printStackTrace();
  }
  //
  return result;
 }
}

 

 

public class AppUtil {
    private static final String implClassPath = "com.xx.service.impl.AppServiceImpl";
 private static AppService appService;
 public static BundleContext BUNDLECONTEXT;
 
 public static void  setAppService(AppService appService){
  if(implClassPath.equals(appService.getClass().getName()))
      AppUtil.appService = appService;
 }
 
 public static AppService getAppService(){
  return appService;
 }
 
 public static Namespace getNamespace(String namespace){
  return appService.getNamespace(namespace);
 }
 
 public static <T> T getService(Class<T> clazz){
        ServiceReference serviceRef = BUNDLECONTEXT.getServiceReference(clazz.getName());
        Object serviceObject = BUNDLECONTEXT.getService(serviceRef);
        return (T)serviceObject;
 }
 
 public static boolean isAppServiceReady(){
     return appService==null?false:true;
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值