java - 创建 osgi 包时使用 Elasticsearch 时出错

标签 java elasticsearch osgi-bundle

为 Elasticsearch 创建了一个包装器。它在作为 Java 应用程序运行时工作正常。 但是当我创建 OSGI 包时它抛出一个错误。

  org.elasticsearch.env.FailedToResolveConfigException: Failed to resolve config path [names.txt], tried file path [names.txt], path file [/home/local/PAYODA/sidharthan.r/config/names.txt], and classpath
at org.elasticsearch.env.Environment.resolveConfig(Environment.java:207)
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:118)
at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:154)
at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:120)
at com.payoda.commons.elasticsearch.util.GenericEsSearch.getES(GenericEsSearch.java:54)

请帮帮我.. 我正在使用 ES 版本 0.90.10

最佳答案

正如您在 Environment.resolveConfig() 的实现中看到的(抛出异常的那个),它使用 settings.getClassLoader().getResource(path) 解析文件。默认是使用 Classes.getDefaultClassLoader(),它使用 Thread.getContextClassLoader()。由于“names.txt”在 elasticsearch*.jar 中,任何来自 org.elasticsearch.* 类的 ClassLoader 都可以:

Settings settings = ImmutableSettings.settingsBuilder()
  .classLoader(Settings.class.getClassLoader())
  // snip: add some settings
  .build();

或者,您可以将自己的 names.txt 文件放在当前工作目录或配置目录中('path.conf' 设置或默认为 $home/config,$home 是 'path.home 的值' 默认情况下设置或 'user.dir' 系统属性)。

顺便说一句,我自己对 elasticsearch 和 OSGI 做了一些试验,所以也许 molindo-elasticsync有帮助。此外,还有 elasticsearch bundles provided by Servicemix这可能会有帮助。

关于java - 创建 osgi 包时使用 Elasticsearch 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528766/

相关文章:

java - Android 上传图像到 ftp 服务器不起作用

elasticsearch - elasticsearch中日期直方图未排序的日期

java - 找出哪个包调用服务

java - 在Android中初始化之前访问类对象

菜单中的 Java Swing JSeparator 放置不正确

azure - 如何连接到Azure上安装的多个节点的elasticsearch集群?如何获取elasticsearch端点?

node.js - Elasticdump 中的“现在无法切换到旧模式”错误

java - 我可以为 Virgo OSGi bundle 创建单独的属性文件吗?

java - felix scr 中 @Reference 和 @References 注解之间的区别

java - 如何在UTC区域中获取当前日期作为java 8中的long值