【发布时间】:2016-01-27 21:49:51
【问题描述】:
我想在 OSGi 框架中使用 Esper,但是我不确定 OSGi 中的类加载机制将如何实现我需要实现的目标,甚至不确定如何在 OSGi 中使用 Esper。
我使用的是 Esper 5.3,在检查捆绑清单时,它没有使用 Dynamic-Import OSGi 标头。 Esper 的核心是 EPStatements,我理解它是在 POJO 上运行的 SQL 查询。
我很难理解的是,Esper 捆绑包如何访问它们,它不使用动态导入并且不知道将来可能会被引导操作哪些 POJO。
例如,如果我尝试创建 EPStatement:
select * com.example.Pojo
如果类 com.example.Pojo 位于 Esper 核心的另一个捆绑包中,则加载 Pojo 的唯一方法是使用 its 类加载器。这可以通过以下方式完成:
Thread.currentThread().setContextClassLoader(com.example.Pojo.class.getClassLoader);
但这不只是将Pojo 加载到包含Pojo 本身的包的类空间中吗?在创建上述示例 EPStatement 时,Esper 包如何获得对它的访问权限。
【问题讨论】:
标签: java classloader esper contextclassloader