問題タブ [apache-felix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
osgi - osgi:バンドル内に部分的に存在するインポートパッケージ
2つのバンドルAとBに存在するパッケージXYZがあります。
バンドルBはパッケージXYZをエクスポートしますバンドルAはパッケージXYZをインポートし、自分のクラスClass1が見つからないという例外を受け取ります。それは機能するはずですか?
私はfelixでglassfish3.1を使用しています
osgi - jsafeJCEFIPS.jar OSGi を使用する
jsafeJCEFIPS.jar OSGi を使ってみた人はいますか? jar は署名されているため、バンドルに変換できません。バンドルに jar として埋め込もうとしましたが、JsafeJCE オブジェクトのインスタンスを作成しようとすると、常に java.lang.SecurityException: "JsafeJCE provider is disabled, a FIPS 140 required self-integrity check failed" がスローされます。
JsafeJCE 自体の整合性 (署名など) を正常にチェックできないようです。jsafeJCE.class.getProtectionDomain を出力します。これは (inputstream:bundle-name.jar ) です。
jsafeJCE を OSGi で動作させる方法については、Apache Felix を使用しています。
前もって感謝します!
osgi - Apache Felix のデプロイがうまくいかない
Apache Felix のobr deployコマンドを使用して、特定のバージョンのバンドルをデプロイしようとしています。
File Install のバージョン 3.1.10 をインストールしたいのですが、残念ながらdeployはバージョンを認識しません (@ を使用して指定する場合):
セミコロンを試しても機能しません。
誰が何が起こっているのか知っていますか?
PS: "File Install 3.0.2" をインストールし、"3.1.10" の jar をロード ディレクトリに配置して (別の "File Install" バンドルをインストールする)、"3.0.2" を削除した場合のボーナス ポイントバージョン!残念ながら、「ファイルのインストール」は常に中断されるため、これは機能しません。
java - OSGi バンドル全体のサービスにアスペクトを追加する
サービスを公開 (エクスポート) する OSGi バンドル (私が所有していないため、変更できません!) がEchoService
あり、このサービスのメソッドにアスペクトをアタッチしたい (前処理/後処理を実行するため)その周りに)。これらは Apache Felix コンテナーにデプロイされます。
私は独自の OSGi バンドル (明らかに をインポートするEchoService
) を作成し、標準の Spring AOP を使用して Spring の側面をそれにアタッチしました。ただし、アスペクトが接続されておらず、インターセプターが呼び出されていないようです。
これは、自分のバンドルに属していないサービスを傍受しようとしているためだと思われます (これは合理的に思えます)。あれは正しいですか?どうすればこれを克服できますか?
私のインターセプター/アスペクトは次のようになります。
ant - BND を使用してサードパーティの JAR を埋め込む
ANT と従来の BND ツールを使用して構築された OSGi バンドルがあります。私のバンドルは内部でライブラリ (JAR) を使用していますが、これは私の OSGi コンテナ (Apache Felix) 内のバンドルとしては利用できません。そのため、実行時にアクセスできるように、 bundle 内に埋め込もうとしています。
ANT+BND を使用してそのようなライブラリ/JAR を埋め込むにはどうすればよいですか? (注:MAVENを使用することはできません。これを使用すると、はるかに簡単になる可能性があります)
java - どうすればManagedService構成をすぐに取得できますか?
Felix構成管理ライブラリを使用して、OSGiサービスの構成ファイルを読み取って適用しています。私が構成しているサービスの多くはサードパーティ(org.ops4j.pax.web.pax-web-jettyやorg.ops4j.pax.url.mvnなどBundleActivator
)であり、宣言型サービスではなく単純なサービスを使用しています。これらのサービスはそれぞれ2回初期化されることがわかりました。
- アクティベーション時に、彼らは呼び出します
ManagedService#updated(null)
、そして - 非常に短い間、Felixは非同期
ConfigurationManager.UpdateThread
で呼び出します。ManagedService#update(non-null)
構成を適用するためのこの遅延は嫌いです。固有の競合状態が原因で、不規則な障害が発生します。この問題を回避するために構成を同期的に適用できる代替のCM実装はありますか?または、Felixを同期させることはできますか?(ソースコードとManagedService javadocを調べると、いいえのように見えます。)
osgi - SIP Communicator (Jitsi) を別の既存の osgi フレームワークにデプロイし、osgi コンソールでそれを制御できます
SIP Communicator (Jitsi) を使用しています。felix を起動し、そのバンドルを展開します。sipCom を閉じると、すべてのバンドルがアンインストールされ、felix フレームワークも閉じます。これでバンドルをデプロイしましたが、sip_communicator を閉じた後、felix が動作し、バンドルが停止しないようにする必要があります。これについては、以下の1つのアイデアですが、実装方法がわかりません:
新しい felix osgi を起動し、バンドルを展開してから、SIP_Communicator のバンドルを展開します。sipcom を閉じるには、SIP_Communicator のバンドルを停止します。
問題: SIP Communicator を制御できる felix に展開する必要があるバンドルがわかりません。
java - Bundle.loadClass()は、フィールドまたはメソッドのないクラスインスタンスを返します
プログラムでOSGiフレームワークを作成し、それを使用してバンドルをロードし、そのバンドルからクラスをロードしたいと思います。電話Bundle.loadClass()
をかけるClass
と、すべてのfields \ methods\constructorフィールドがnullに設定されたインスタンスが表示されます。名前しかありません。パブリックメソッドなどにアクセスできません。EquinoxとFelixの両方を試しましたが、同じ結果になりました。
バンドルMANIFEST
:
フレームワークのセットアップ:
と
バンドルの読み込み:
ActivatorClass
インスタンスにはコンストラクター参照が含まれていますが、パブリックメソッドは含まれていません。ありpublic void start(BundleContext c)
ますpublic void stop(BundleContext c)
。
どうすれば正しいものをロードできますClass
か?私は何が間違っているのですか?助けてくれてありがとう。
java - スイングアプリケーションとosgifelix
非常に単純なバンドルを作成しました。
マニフェストファイルを編集しました:
私はこれらすべてのものをjar処理し、felixを起動し、次のようにしました。start file:testosgi.jar
エラーは発生しませんが、機能しません。何が起こっているかについての詳細な情報を取得する方法はありますか?
java - felixexthttpserviceはCookieのセッションパスを設定します
Felixosgiコンテナで実行しているWebアプリケーションがあります。extHttpServiceの実装としてjettyを使用しています。現在、Cookieを「/」ルートパスに書き込んでいます。他のWebアプリケーションとの競合を引き起こしているため、これを変更したいと思います。桟橋のドキュメントを見ると、次のプロパティを設定する必要があるようです。
org.mortbay.jetty.servlet.SessionPath
ただし、osgi経由でExtHttpServiceを使用してこれを設定する方法を見つけることができません。jetty.xmlファイルを作成し、これをconfig.propertiesに追加して、サーブレットを登録するための呼び出しでプロパティとして設定してみました。
誰かがこれを設定する方法を知っていますか?
ありがとう、