栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在激活器中获取IEclipseContext

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在激活器中获取IEclipseContext

令人遗憾的是,没有

IEclipseContext
注射就无法获得。关于如何在未附加到应用程序模型的类中使用eclipse 4
DI的答案中写道:

但是,问题在于,

IEclipseContext
已经需要将已经注入到可以访问需要注入的对象的类中。

尽管如此,我已经解决了日志记录的问题,但我认为,该原理通常有效。总会有一些服务提供您所需的东西。如果您不能使用依赖项注入,则必须以某种方式(Internet和实验通常是)获得适当的服务类名称。如果获得服务类名称,则可以从捆绑软件上下文中获取实例引用。幸运的是,无需使用注入即可访问包上下文。

回到我们的日志记录问题。正在搜索的类是

org.osgi.service.log.LogService

public class Activator implements BundleActivator {    ...    private static BundleContext context;    ...    public static BundleContext getContext() {        return context;    }    ...    public void start(BundleContext bundleContext) throws Exception {        ServiceReference<?> logser = bundleContext.getServiceReference(LogService.class);        LogService ls = (LogService)bundleContext.getService(logser);        //print an error to test it (note, that info can be below the threshold)        ls.log(LogService.LOG_ERROR, "The bundle is starting...");        Activator.context = bundleContext;    }    ...}

等等!

!ENTRY eu.barbucha.rcp-experiment.kernel 4 0 2013-08-20 07:32:32.347!MESSAGE The bundle is starting...

就这样。以后

Activator.getContext()
,如果需要,您可以使用来获得包上下文。

重要说明:很
遗憾,您现在无法降低阈值。JVM参数

-Declipse.log.level
不会影响OSGI日志服务,您现在仅使用OSGI记录器。不幸的是,他们(可能已经临时地)对日志记录阈值进行了硬编码(请参阅eclipse
3.7中的如何记录警告和信息)。我发现,他们还没有修复它。开普勒版本中都没有。但是,您可以做出让步。您可以在可能的情况下进行
注入

最终解决方案(也可以全局捕获异常)

我扩展了激活器:

ServiceReference<?> logreser = bundleContext.getServiceReference(LogReaderService.class);LogReaderService lrs = (LogReaderService) bundleContext.getService(logreser);   lrs.addLogListener(new LogListener() {    @Override    public void logged(LogEntry entry) {        System.err.println("Something was logged: " + entry.getMessage());    }});

当ewew是记录在某处的内容时,确实会出现 以记录某事 开头的文本。但是,最大的好处是,此类是我的。我可以控制
日志条目还包含级别。我还可以轻松设置阈值。例如在命令行上。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509612.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号