osgi blueprint как читать файл ресурсов в пакете

Я использую osgi и blueprint, я ищу, как прочитать файл в моем комплекте? Например: mybundle

  • файл.json
  • OSGI-INF/схема/схема.xml
  • ВЕБ-ИНФ
  • *

Я хочу прочитать файл .json в myservice.


person timactive    schedule 06.05.2013    source источник


Ответы (1)


Самый простой способ сделать это — внедрить контекст пакета в ваш бин.

blueprint.xml

<bean id="plugin" class="com.timactive.MyBean" init-method="start">
    <property name="bcontext" ref="blueprintBundleContext"></property>
 </bean>

Возможная ссылка:

blueprintBundle Предоставляет объект Bundle пакета.

blueprintBundleContext Предоставляет объект пакета BundleContext.

blueprintContainer Предоставляет объект BlueprintContainer для пакета.

blueprintConverter Предоставляет объект Converter для пакета, предоставляющего доступ к средству преобразования типов Blueprint Container. Преобразование типов содержит больше информации. источник: http://www.ibm.com/developerworks/opensource/library/os-osgiblueprint/

И в вашем классе:

import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext
public class MyBean  {

    public BundleContext bcontext;
    public boolean start(){
    try {
    Bundle bundle = bcontext.getBundle();
    InputStream is = bundle.getEntry("/file.json").openStream();
    String jsondb =  readFile(is);

    } catch (IOException e) {
                LOG.error("The file treefield.json not found", e);
                return(false);
            }

        }

        return(true);
    }

    private String readFile(InputStream is ) throws IOException {
        java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
   }
   public void setBcontext(BundleContext bcontext) {
    this.bcontext = bcontext;
}
person timactive    schedule 06.05.2013