問題タブ [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.
java - OSGi での java.lang.NoClassDefFoundError
アクティベーターが宣言されたバンドルがあります。このアクティベーターは、JFrame を作成して表示します。
Plugin プロジェクトとして Eclipse で実行すると、正常に動作します。Felixを装着すると、もう機能しません。次のように表示されます: java.lang.NoClassDefFoundError: com/griep/ui/MainFrame
しかし、メインフレームは、もちろんパブリック クラスとして、アクティベーターと同じバンドルにあります。クラスローダーがクラスを見つけられない理由がわかりません。
誰が何が起こっているのか知っていますか?
osgi - Apache Felix obr デプロイ エラー メッセージ
obr deploy コマンドが失敗した場合のエラー メッセージの読み方 次に例を示します。
上記メッセージの読み方は?実際に満足していないものは何ですか?
java - FelixでDerbyクライアントを使用するにはどうすればよいですか?
OSGiバンドル内からDerbyクライアントを実行したい。バンドルはMavenによってビルドされるため、に依存関係を追加しましたorg.apache.derby:derbyclient
。実行時に、次の例外が発生しますjava.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/testdb
。
興味深いことに、組み込みドライバーとへの依存関係を使用すると、すべてが機能しorg.apache.derby.derby
ます。この2つの違いはわかりません。
何が間違っているので、どうすれば修正できますか?
いくつかのヒント:
- インターネットで見つけたアドバイスの後、次のOSGiヘッダーを設定しました
DynamicImport-Package: *
。これにより、組み込みドライバーの問題は修正されましたが、クライアントは引き続き失敗します。 - 私が使用しているDerbyのバージョンは10.7.1.1であり、OSGiが有効になっている必要があります(少なくともOSGiヘッダーがあります)。
jboss - JBoss の OSGI gogo コンソール?
参考までに、私はMavenとEclipse 3.6を使用しています
「felix」を JBoss (4.2.3) にデプロイして、Eclipse コンソールから Gogo シェルにアクセスできるようにすることはできますか?
もしそうなら、どのような「記述子」を使用する必要がありますか? web.xmlファイルを使用した「サーブレット」タイプの展開にしか遭遇したことがありません。
java - ApacheFelixWeb管理コンソールのデプロイが失敗する
Apache Felix Web管理コンソールのデプロイが、要件が満たされていないために失敗します。ログは次のとおりです。
上記のように、解決に役立つ他のリポジトリをいくつか追加してみました。
既知の回避策はありますか?
java - OSGiメモリ管理
OSGiのメモリ管理について理論的な質問があります。
OSGiコンテナ(たとえばFelix)があるとしましょう。そして、メモリリークのあるバンドルを作成したとしましょう。
そして、ここに私が持っているいくつかの質問があります:
- この「障害」バンドルのメモリ消費を制限する方法はありますか?たとえば、メモリ制限を超えた場合– OSGiコンテナからメールが送信されたり、アンインストールされたりしますか?
- バンドル「A」のメモリ消費はバンドル「B」にどのように影響しますか。たとえば、「A」によってメモリ不足エラーが発生した場合、OSGiコンテナ全体が爆発しますか?
dependencies - pomの指示と一致しないデプロイ時に必要なリソース
私は「OSGiとApacheFelix3.0 」という本を読んでいて、デプロイしているバンドルが別のバンドルの間違ったバージョンに依存していると主張するという問題にぶつかりました。これらの例を以前に試したことがある人は、第10章の終わりにいます-BookshelfServiceBundleにロギング機能を実装します。
基本的に問題は次のとおりです。
「BookshelfService」というバンドルがあり、これにいくつかの新しいロギング機能を追加しました。この新機能により、バージョン1.10.0になります
「BookshelfService」の機能へのコマンドラインインターフェイスである「BookshelfServiceGogocommands」という別のバンドルがあります。バージョン1.9.0です。
困惑しているのは、「Bookshelf Service Gogoコマンド」バンドルを展開すると、次のようにインストールされることです。
もちろん、これは「本棚サービス」バンドルの間違ったバージョンです。バージョン1.10.0を使いたい。
フレームワークを更新するか、フレームワークにバージョン1.10.0を使用させると、「BookshelfServiceGogoコマンド」が提供する機能が使用できなくなります。最新バージョンの「BookshelfService」での作業を拒否しています。
ただし、pom.xmlファイルによると、依存関係は実際に「BookshelfService」の1.10.0バージョンに対するものです。「BookshelfServiceGogoコマンド」のPOMは次のとおりです。
だから私はそれが1.7.0でのみ動作したい理由を理解していません。
これらのバンドルは両方ともiPOJOを利用しているため、meta.xmlファイルが含まれていることにも言及する価値があります。ただし、本の例のダウンロード可能なサンプルコードと自分のコードを比較していて、すべてが一致しているように見えるため、問題はないと思います。
何がうまくいかないのか、この問題の原因をどこで探すのかについてのアイデアはありますか?
編集:
要求に応じて、生成されたマニフェスト。
本棚サービス1.7.0:
BookshelfServiceバージョン1.10.0
BookshelfServiceGogoコマンド1.9.0
android - android-app 内で実行されている組み込みの Felix が org.osgi.framework を解決できない
なぜ次のことが起こるのかわかりません:
小さなAndroidアプリケーションから組み込みのApache Felixを実行しています。フレームワークの起動後にプログラムで 2 つのバンドルをインストールしますが、どちらも「解決済み」状態にはなりません。これにより、バンドル「MyBundle1」は「MyBundle2」をインポートします。
これは Logcat が教えてくれることです:
エラーメッセージの内容は完全に理解しています(まあ...バージョン1.5以降のorg.osgi.frameworkは解決できません)が、なぜこれが起こるのかわかりません。フレームワークが「自分自身」を解決できないのはなぜですか?! 同じ felix.jar を adb shell でスタンドアロンとして実行しようとしましたが、両方のバンドルが機能します。もちろん、felix.jar は最新 (3.2) です。
アドバイスありがとうございます!
ダニエル
フェリックスセットアップ
以前の問題と関係があるかどうかはわかりません。
バンドルをインストールして開始します
それらは以前にdxされ、 adb pushで /data/felix に移動されました。
Android アプリケーションで使用したのと同じコードは、通常の Java コンソール アプリケーション内でも機能します。
web-services - OSGi + jettyでメトロWebサービスを実行するには?
OSGi (Felix) + Metro を使用して WebService (wsdl) を Jetty で動作させようとしていますか?
OSGi + Jetty で動作するサーブレットと JSP を取得しましたが、Metro を使用した WebService は動作しませんでした。テストするサンプルの OSGi WAR ファイルがあり、Glashfish にデプロイして動作しました。同じことを Jetty にデプロイする必要があります。
これに関するいくつかのサンプルまたは指示を共有してください。
ありがとうございました
ヴィベク
java - osgi の大きなプロジェクト (>200 バンドル) を管理するために maven から gradle に切り替える
私たちは、maven と maven-osgi プラグインで構築された大きな (~215 バンドルとカウント) osgi (felix+springdm) プロジェクトを持っています。
Maven の方法にはいくつかの問題があります。
1. サブモジュール pom は、共通の変数と依存関係を利用するために親 pom から継承する必要があります (これで問題ありません)。この種の循環参照は、すべての同期を維持することを非常に困難にします。
2. サブバンドルの個々のバージョン管理が非常に複雑だったため、(プロジェクトに参加する前に) すべてのバンドルに同じバージョンを使用することにしました。これは、リリースごとにすべてのバンドルのバージョンを更新することを意味します。これにより、osgiの概念全体が少し無意味になります。少数のバンドルだけに取り組み続けると言っているわけではないことに注意してください。すべてのバンドルに取り組んでいますが、すべてのリリースには通常、一部のバンドルにのみ影響する 1 つまたは 2 つの機能が含まれています。
3. 最終アーティファクトのパッケージとデプロイを行うには、デプロイに必要なすべてのバンドル (テストとモック用のいくつかを除く) をインポートする別のサブモジュールが必要です。[編集] この集約は、バンドルをコンパイルせず、maven リポジトリから選択するだけなので、メインの pom のものとは異なることに注意してください。
4. Maven 依存関係システムと osgi プラグインのインポートを整合させるのが難しい場合があります。インポートを忘れたり、間違った依存関係を置いたりするのは簡単すぎます。
[編集] すべてのバンドル pom には、次のようなセクションがあります。
これらすべての理由から、問題はありませんが、maven に完全に満足しているわけではありません。最近、誰かが Gradle を万能薬としてではなく、現在の状況に対する明確な改善策として提案しました。
Gradleに移行することをお勧めしますか? そして、どちらが最善の方法でしょうか?
他の誰かが同じ状況を経験しましたか? これは、Osgi を使用するすべての大きなプロジェクトに共通することだと思います。
免責事項:次のような同様の質問を探しました:
Builder、Gradle、または Maven 3 を待ちますか?
Maven : OSGI、バンドル、およびマルチモジュール プロジェクト
しかし、osgiサブモジュールについてではない場所、またはgradleについてではない場所のいずれかです。