osgi と blueprint を使用しています。バンドル内のファイルの読み取り方法を検索しますか? など:mybundle
- ファイル.json
- OSGI-INF/blueprint/blueprint.xml
- WEB-INF
- *
myserviceでfile.jsonを読みたいです。
osgi と blueprint を使用しています。バンドル内のファイルの読み取り方法を検索しますか? など:mybundle
myserviceでfile.jsonを読みたいです。
これを行うための簡単な方法は、Bean に bundlecontext を注入することです。
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 Blueprint Container タイプ変換機能へのアクセスを提供するバンドルの Converter オブジェクトを提供します。型変換には、より多くの情報があります。ソース: 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;
}