問題タブ [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(Apache Felix)にサービスを登録するにはどうすればよいですか?
コードからApacheFelixを起動し、独自のバンドルを登録することに成功しました。
OSGIプロジェクト間の次の関係が必要です。
[OsgiInterface]
--インターフェイスを提供します。
[OsgiModuleA]
--(バンドル)は、これらのインターフェースの実装を提供します。
知っている[OsgiInterface]
[OsgiUsage]
--1つ以上のバンドルを利用します。
知っている[OsgiInterface]
と[OsgiModuleA]
現在、インターフェースを実装するサービスの登録に問題があります。manifest.mf
ファイルのエントリが間違っていると思います。
追加情報
誰かが私の前の質問のコードを見ることができれば、それはとても親切です
この質問を参照させてください:
パッケージにインターフェイスを提供する3番目のプロジェクトOsgiInterfacesを作成しようとしました。このプロジェクトは、OsgiModuleAとOsgiUsageの両方で知られています。SomeInterface
interfaces
OsgiModuleA: エントリにmanifest.mf
追加の値が追加されました。さらに、アクティベーターに提供されるインスタンスがあります。interfaces
Import-Package:
SomeInterface
バンドルが開始されると、次のことNoClassDefFoundError
が発生します。インターフェースSomeInterface
が不明です。
編集:
これで、エラーが修正されたので、最も重要な部分は次のとおりでした。
これがなければ、私は得ClassCastException
ました。
maven-2 - バンドルへの推移的な依存関係?
bundle
Mavenアーティファクトのパッケージとして使用すると、推移的な依存関係に関するすべての情報が失われるようです。したがって、アーティファクト A がアーティファクト B に依存し、B がバンドルとしてパッケージ化されている場合、A は B が持つ Maven 依存関係を認識しません。これにより、この情報を必要とする A の POM で使用される Maven プラグイン (maven-dependency-plugin や maven-eclipse-plugin など) で多くの問題が発生します。私が見つけた唯一の回避策は、依存関係をバンドルに埋め込むことです (felix バンドル プラグインの構成で Embed-Dependencies を使用します)。私はそれをしたくありませんが、それらを独自のファイルに保管したいと思います。別の回避策はありますか?
netbeans - Netbeansとosgiバンドルの開発
netbeans6.8とfelix2.0.4を使用してOSGIプロジェクトを開始しようとしています。誰かが私にすぐに始めるためのヒントやリンクを提供できますか?
前もって感謝します。
java - OSGi デプロイメントの実行をプロファイリングする方法は?
いくつかのハードウェア制限のあるデバイスにデプロイされるアプリケーション用の OSGi バンドルの開発を開始しています。そのバンドルの実行をプロファイルして、最終的なデバイスの依存関係に常に適合するようにする方法を知りたいです。各バンドルが使用しているメモリ量を把握し、ボトルネックを特定し、同じサービスの異なる実装を比較するためのプロファイラーがあれば便利です。
OSGi デプロイメント用のプロファイラーはありますか、それとも一般的な Java プロファイラーを使用する必要がありますか?
開発のために、Apache felix で Pax ランナーを使用してバンドルを実行し、maven を使用してプロジェクトの依存関係とビルドを管理しています。
osgi - OSGiHTTPサービスを使用したWicketWebアプリケーションの開始
OSGi HTTPサービスのFelix実装を使用してWicketアプリケーションを開始しようとしています。そのため、パラメーターを使用WicketServlet
してサービスを登録するだけです。applicationClassName
また、Felixホワイトボードの実装を使用してWebサービスをServlet
1つとして登録してみました。
どちらの場合も、Pax RunnerとFelix(mvn package install pax:run -Dframework=felix -Dprofiles=log,config
)を使用してデプロイすると失敗しますが、例外はClassLoader
:に関連しているようです。
バンドル内のすべてをエクスポートしようとしましたが、同じように動作します。
最も奇妙なことは、Equinox()を使用してデプロイすると完全に機能することmvn package install pax:run -Dframework=felix -Dprofiles=log,config
です。
目に見える問題のようですが、修正方法がわかりません。何か間違ったことをしているのでしょうか。WicketServlet
アプリケーションのインスタンス化を制御するために拡張を試みる必要がありますか?または、アプリケーションファクトリを使用していますか?
更新:または、アプリケーションファクトリを使用していますか?
applicationFactoryClassName
パラメータを設定しようとしましたが、ContextParamWebApplicationFactory.class.getName()
役に立ちませんでしたが、それでもfelixで失敗し、equinoxで動作していました。
どんな光でも大歓迎です。
tomcat - OSGi Web エコシステム全体を理解するのに問題がある
私は Java と OSGi の世界全体にかなり慣れていないため、OSGi Web アプリケーションのエコシステムを理解するのに苦労しています。
より正確に言うと、私は現在、生態系のすべての部分がどのように相互に関連しているかを理解しようとしています:
- OSGi フレームワーク (例: Apache Felix、Equinox、Knoplerfish)
- OSGi ランタイム (Spring DM Server、Pax Runner、Apache Karaf など)
- Web Extender (Pax Web Extender、Spring Web Extender など)
- Web コンテナ (Apache Tomcat、Jetty など)
彼らの関係についての私の実際の理解を視覚的に表現するために、この画像をチェックしてください。
私の知る限り、OSGi フレームワークは OSGi 仕様の実装です。ランタイムは、OSGi 仕様の上にロギングなどの追加機能を追加するディストリビューションです。OSGi と Tomcat のような Web コンテナーのクラスパス メカニズムにはいくつかの違いがあるように思われるため、何らかのトランスレーターが必要です。この部分は「Web Extender」によって処理されます。
私のためにこのすべてを明確にしてくれませんか?私はすべてを正しく理解していますか?
osgi - Knopflerfishパッケージ
私は現在、Knopflerfish、Equinox、およびFelixがOSGi4.2にどの程度準拠しているかを示すマトリックスを作成しています。
これまでのところ、Knopflerfishのドキュメント(リンク1、リンク2)を見て、コアとCompendiumの仕様が実際にどの程度実装されているかを把握しました。
セキュリティレイヤーと宣言的サービスについて一貫性のないステートメントがいくつかありますが、コア仕様は完全に実装されているようです。
私が不思議に思うのは、すべてのCompendium仕様のどれだけが実装されているかです。
- リモートサービス
- ログサービス
- Httpサービス
- デバイスアクセス
- 構成管理サービス
- メタタイプサービス
- プリファレンスサービス
- ユーザー管理サービス
- ワイヤー管理サービス
- IOコネクタサービス
- 初期プロビジョニング
- UPnPデバイスサービス
- 宣言型サービス
- イベント管理サービス
- 展開管理者
- 自動構成
- アプリケーション管理者
- DMT管理サービス
- 管理サービスの監視
- 外国出願アクセス
- ブループリントコンテナ
- トラッカー
- XMLパーサーサービス
- ポジション
- 測定と状態
- 実行環境
詳細については、Knopflerfishのソースコードをダウンロード(ダウンロードページ)して見てみました。仕様の一部は、OSGi Alliance(org.osgi。*)によって提供される「元の」フレームワークを介して実装されているようです。
1つの例はUPnPパッケージです。
代替テキストhttp://img6.imageshack.us/img6/5853/screenshot20100403at212.png
これは、Knopflerfishによって直接実装されていない欠落部分が、「元の」OSGiフレームワークを介して追加されることを意味しますか?
そして、これはFelixやEquinoxのような他のフレームワークにも当てはまりますか?
java - OSGi バンドルでの com.sun.management.OperatingSystemMXBean の使用
アプリケーションの CPU やメモリなどを監視するために使用されていたレガシー コードがあり、バンドルに変換したいと考えています。今、このバンドルを開始すると、不平を言う
JVM の統計情報にアクセスするために、OperatingSystemMXBean を使用していました。
私の質問は、このクラスを OSGI コンテナー内で使用できるかということです。または、アプリケーションを監視するために他の方法を使用する必要があります。OSGi より前のノードのパフォーマンス数値を取得するために、Web フロントエンドからアプリケーションへの RMI 呼び出しを行っていました。
java - felixでのOSGIクラスキャスト例外
私はosgiにかなり慣れていないので、機能的な概念実証を一緒に取得しようとしています。
セットアップでは、私の共通APIは、バンドルアクティベーターのないcommon-api.jarというクリエイティブな名前のバンドルで作成されますが、すべてのインターフェイスをエクスポートします。この状況で重要なのはDatabaseService.javaです。
次に、systemx-database-serviceという2番目のバンドルがあります。これにより、データベースサービスインターフェイスが実装されます。これは、実装バンドルのアクティベーターの場合と同様に正常に機能します。データベースへの接続をテストし、いくつかの調停値を選択します。他のバンドルで利用できるようにしたいサービスも登録します。
基本的な考え方は、データベースサービスのサービス参照を探すときに、SystemDatabaseServiceの実装を取得することです。
私が検査サービスを行うとき、それを出力します:
これは、テストバンドルでこれを行うと次のように信じるようになります。
DatabaseService.classのインスタンスを取り戻す必要がありますが、残念ながらそのような運はありません。サービスが見つからないようです。ここで私に固執する私の話は奇妙になります。
行くところがないと思って、私はこの怪物を書きました:
これで実際にサービス参照を見ることができますが、このエラーが発生します
実装が明らかにインターフェースを実装しているので、これはクレイジーです!
どんな助けでもいただければ幸いです。私はosgiの考え方に非常に慣れていないので、ここでの私のアプローチ全体に欠陥がある可能性があることを覚えておいてください。
ああ。マニフェストが必要な場合は投稿できます。そして、私はmaven-bnd-pluginを使用してfelixでビルドおよび実行しています。
ありがとう
ニコ
java - NoClassDefFoundError: HttpClient 4 (APACHE)
私は apache http commons 4 を使用しています。netbeans のクラスパスに httpcore-4.0.1.jar と httpclient-4.0.1.jar の両方を追加しました。エラーが発生しています:
java.lang.NoClassDefFoundError: org/apache/http/impl/client/DefaultHttpClient
私のコードは次のとおりです。助けてください。