gboat2.base.bridge.util
类 BundleUtil

java.lang.Object
  继承者 gboat2.base.bridge.util.BundleUtil

public class BundleUtil
extends Object

对 Bundle 进行常规操作的工具类

从以下版本开始:
3.0
作者:
何明旺

构造方法摘要
BundleUtil()
           
 
方法摘要
static ClassLoader getBundleClassLoader(org.osgi.framework.Bundle bundle)
          得到 Bundle 的类加载器。
static org.osgi.framework.Bundle getBundleForRequestJsp(String path, com.opensymphony.xwork2.ActionInvocation invocation)
          根据调用的 Action 和需要返回的 JSP 路径,获取 JSP 页面所在的 Bundle
static org.osgi.framework.Bundle getBundleForRequestJsp(String path, com.opensymphony.xwork2.ActionInvocation invocation, javax.servlet.ServletContext servletContext)
          根据调用的 Action 和需要返回的 JSP 路径,获取 JSP 页面所在的 Bundle
static List<String> getClasses(String pkg, org.osgi.framework.Bundle bundle)
          获取指定Bundle中某个包下的所有类的类名
static
<S> S
getService(org.osgi.framework.BundleContext context, Class<S> clazz)
          取得指定类型接口的实现
static
<S> List<S>
getServices(org.osgi.framework.BundleContext context, Class<?> clazz)
          取得指定类型接口的所有实现
static Properties loadProperties(org.osgi.framework.Bundle bundle, String resource)
          加载指定Bundle中的属性文件
static org.apache.commons.configuration.PropertiesConfiguration loadPropertiesConfiguration(org.osgi.framework.Bundle bundle, String resource)
          加载指定Bundle中的属性文件
static InputStream loadResource(org.osgi.framework.Bundle bundle, String resource)
          加载指定Bundle中的属性文件
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

BundleUtil

public BundleUtil()
方法详细信息

loadResource

public static InputStream loadResource(org.osgi.framework.Bundle bundle,
                                       String resource)
加载指定Bundle中的属性文件

参数:
bundle - 指定的 bundle
resource - 需要加载的资源文件的路径,如:/test/1.txt

loadProperties

public static Properties loadProperties(org.osgi.framework.Bundle bundle,
                                        String resource)
加载指定Bundle中的属性文件

参数:
bundle - 指定的 bundle
resource - 需要加载的属性文件的路径,如:/test/1.properties
返回:

loadPropertiesConfiguration

public static org.apache.commons.configuration.PropertiesConfiguration loadPropertiesConfiguration(org.osgi.framework.Bundle bundle,
                                                                                                   String resource)
加载指定Bundle中的属性文件

参数:
bundle - 指定的 bundle
resource - 需要加载的属性文件的路径,如:/test/1.properties
返回:

getClasses

public static List<String> getClasses(String pkg,
                                      org.osgi.framework.Bundle bundle)
获取指定Bundle中某个包下的所有类的类名

参数:
pkg - 包名
bundle - 该包所在的Bundle对象
返回:
类name集合

getBundleClassLoader

public static ClassLoader getBundleClassLoader(org.osgi.framework.Bundle bundle)
得到 Bundle 的类加载器。

在 Bundle 内部代码中要得到自己 Bundle 的 ClassLoader 很简单,在自己 Bundle 的代码中,直接写 this.getClass().getClassLoader() 就得到了自己 Bundle 的 ClassLoader 了。

本方法主要是用于获取外部 Bundle 的类加载器,实现思路:

  1. 调用 Bundle 的 findEntries 方法,得到 Bundle 中任意一个 class 文件;
  2. 根据这个 class 文件的路径,得到类名;
  3. 调用 Bundle 的 loadClass() 方法,得到这个类;
  4. 调用这个类的 getClassLoader() 方法,得到对应的 ClassLoader。

注意:该方法不能用于获取下列 Bundle 的 ClassLoader

参数:
bundle - Bundle 实例
返回:
Bundle的类加载器

getService

public static <S> S getService(org.osgi.framework.BundleContext context,
                               Class<S> clazz)
取得指定类型接口的实现

类型参数:
S - 接口的类型
参数:
context - bundleContext
clazz - 接口的class
返回:

getServices

public static <S> List<S> getServices(org.osgi.framework.BundleContext context,
                                      Class<?> clazz)
取得指定类型接口的所有实现

类型参数:
S - 接口的类型
参数:
context - bundlecontext
clazz - 接口的class
返回:

getBundleForRequestJsp

public static org.osgi.framework.Bundle getBundleForRequestJsp(String path,
                                                               com.opensymphony.xwork2.ActionInvocation invocation)
根据调用的 Action 和需要返回的 JSP 路径,获取 JSP 页面所在的 Bundle

参数:
path - JSP 路径
invocation - 当前调用的 Action
返回:
如果 path 的格式为 /xxx/content/* 或 xxx/content/*, 则查找系统中是否存在 symbolicName 为 xxx 的 Bundle,如果存在,则返回该 Bundle;如果不存在或 path 的格式不是以上两种形式,则返回当前调用的 Action 所在的 Bundle,但如果当前调用的 Action 不是存在于 Bundle 中,则返回 null

getBundleForRequestJsp

public static org.osgi.framework.Bundle getBundleForRequestJsp(String path,
                                                               com.opensymphony.xwork2.ActionInvocation invocation,
                                                               javax.servlet.ServletContext servletContext)
根据调用的 Action 和需要返回的 JSP 路径,获取 JSP 页面所在的 Bundle

参数:
path - JSP 路径
invocation - 当前调用的 Action
servletContext - Servlet 上下文实例,可以为 null
返回:
如果 path 的格式为 /xxx/content/* 或 xxx/content/*, 则查找系统中是否存在 symbolicName 为 xxx 的 Bundle,如果存在,则返回该 Bundle;如果不存在或 path 的格式不是以上两种形式,则返回当前调用的 Action 所在的 Bundle,但如果当前调用的 Action 不是存在于 Bundle 中,则返回 null


Copyright © 2014 广联达软件股份有限公司(Glodon Software Co., Ltd.). All rights reserved.