問題タブ [osgi]
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.
communication - Eclipse 宣言型サービスとビュー (ContentProvider) の間でどのように通信しますか?
さまざまなビューを備えた Eclipse プラグインがあるとします。これらのビューは、データをビューにプッシュする OSGi バンドルからのデータを表示する必要があります。すべてのビューを OSGi バンドルと通信させるのではなく、ビューの黒板として機能し、ビューと他の OSGi バンドルとの間の通信を管理する中間の Facade クラスを用意します。これが理論です。
この問題は、ui バンドル (ビューと Facade を含む) が Declarative Services を使用して他のバンドル (DataStore と呼ぶ) と通信するために発生します。Data Store はさらに別のソースから非同期データ更新を受信するため、コンテンツを Facade (および利用可能な場合は他のバンドル) にプッシュする必要があります。OSGi は、データストアの DS 構成のカーディナリティの要件を満たすために Facade をインスタンス化しますが、ビューはプラグインの IApplication 実装によってインスタンス化されます。IApplication と Facade が同じクラスであっても、お互いを認識しない 2 つの別個のインスタンスを取得します。
これらのコンポーネント (プラグイン Application、Views などと OSGi でインスタンス化された Facade) 間の通信を有効にするにはどうすればよいですか?
java - db4oおよびOSGi-再起動後にデータベースが空になります
モデルストレージとしてOSGi環境でdb4o6.4.54を使用しています。OSGiフレームワークを再起動するたびに、データベースは空のように見えますが、ファイルはそこにあり、完全に空ではありません。
私は次の構成を持っています:
コアバンドル。db4oが提供する標準のdb4o_osgiバンドルに依存します。モデルを取得する場所からコアプラグインに依存するUIバンドル。
コアバンドルは、openServer(String、0)メソッドを介してメモリ内サーバーを作成し、要求/スレッドごとに個別のクライアントを作成します。
問題は、db4oサーバーが作成されるたびに、クエリが結果を返さないことです。
サービスを利用しようとしましたが、うまくいきませんでした。
私のテストの次のステップは、db4oをバンドルに直接含めることでしたが、それは機能しました(その結果、db4oクラスは、データベースに保存したモデルオブジェクトと同じクラスローダーによってロードされました)。db4oフォーラム[1]に1つの投稿がありますが、この問題が存在する理由と、それを(正しく)解決する方法を説明できていません。私は調査を続けますが、他の誰かが私の前にこの問題に取り組んでいるのではないかと思います。
dependency-injection - OSGi/Felix Declarative Services: バインドするサービスをフィルタリングする方法は?
Apache Felix とその Declarative Services (SCR) を使用して、バンドル間のサービス依存関係を結び付けています。
たとえば、java.util.Dictionary にアクセスする必要がある場合は、次のように言って SCR に提供させることができます。
現在、複数の辞書サービスが利用可能であり、「name」サービス プロパティを使用してそれらをフィルター処理したいと考えています (「name=myDictionary」のみが必要です)。これはコードで (ServiceTracker を使用して) 行うことができますが、代わりに @scr アノテーションでフィルターを指定したいと思います。
maven-2 - Maven : OSGI、バンドル、およびマルチモジュール プロジェクト
私は現在、OSGi + Equinox で見つけた Web チュートリアルを Mavenize しようとして、OSGi ベースのアプリケーション (Equinox を使用) を開発しています。このプロジェクトでは、他のバンドルに依存するバンドルがあります (見積もりサービスは見積もりに依存します)。コンパイル フェーズは成功しますが、パッケージ フェーズは成功しません。Mavenは次のように不平を言います:
私は問題を理解していますが、それを機能させる方法がわかりません。これは引用のポンです:
および見積もりのバンドル マニフェスト:
次に、quote-service の pom :
最後に、quote-service のマニフェスト:
何か問題がありますか?前もって感謝します !
osgi - OSGi は、別々の JVM で実行されているコンポーネントの相互作用をどのように管理しますか?
私は、仕様全体を読むことなく、OSGi の全体像をもう少し理解しようと努めてきました。多くのことと同様に、OSGi が実際に何であるかの紹介は、おそらく 10 年間それに取り組んできた誰かによって書かれたものであり、おそらくそれについて何も知らない人の考え方に身を置くのに最適な場所ではありませんでした :-)
Felix の例を見ると、DictionaryService
何が起こっているのかよくわかりません。OSGi は、バンドルをロードして相互に検出できる JVM の別個のインスタンスですか?
StackOverflow に関する他の回答は、OSGi が個別の JVM 内にデプロイされたモジュールを含む分散システムの依存関係の問題を解決できることを明示しているため、明らかにこれだけではありません(さらに、FAQ は ネットワークについて話し続けています)。
後者の場合、ある JVM で実行されているコンポーネントは、別の JVM の別のコンポーネントとどのように対話するのでしょうか? 2 つのコンポーネントは、同じ JVM 内で実行されているかのように (つまり、ローカル メソッド呼び出しを介して) 相互に「使用」できますか? また、OSGi はネットワークを介したデータのマーシャリングをどのように管理しますか (Serializable
たとえば、使用する必要がありますか)?
または、コンポーネントの作成者は、リモート コンポーネント間の通信のために、別の別のメカニズム (OSGi によって提供されるか、独自に記述) を使用する必要がありますか?
どんな助けでも大歓迎です!
osgi - 典型的なOSGiのライフサイクルは何ですか?
OSGiベースのシステムを開発およびデプロイする際に、業界で使用されるライフサイクルについての洞察を得たいと思います。
私の主な焦点は、開発フェーズでバージョン管理されたバンドルが作成されてパッケージ化された後の、展開フェーズです。具体的には、実行される可能性のあるテスト手順、および統合の方法。
いくつかの低レベルの詳細を含む非常に高レベルのアカウントは非常に役立ちます。
ありがとうございました。
java - Eclipseプラグインのクラスローダーを動的に置き換えるにはどうすればよいですか?
クライアントサーバーモデルに適合するEclipseプラグインを開発しています。これは商用プロジェクトであるため、プラグインでサポートするさまざまなデータベースのJDBCドライバーを再配布することはできません。
そこで、ユーザーがjarを見つけて、jarファイル内のクラスを反復処理し、各クラスをロードしてjava.sql.Driverインターフェースを実装していることを確認する簡単な検出メカニズムを使用できるように、設定ページを開発しました。これはすべてうまくいきます。
しかし、問題は、私がHibernateを使用していることです。また、HibernateはClass.forName()を使用してJDBCドライバーをインスタンス化します。
以下を使おうとするとClassNotFoundException
。
そして、次のように自分でドライバーを作成しようとすると、SecurityExceptionが発生します。
編集:それが最良のオプションかどうかはわかりませんが、ConnectionProvider
を使用してドライバーをインスタンス化できる独自の実装方法を採用し、の代わりにClass.forName()
を使用して接続を開きます。かなり基本的ですが、特定のユースケースでは接続プールは必要ありません。Driver.connect()
DriverManager.getConnection()
方法は次のconfigure()
とおりです。
そして、そのgetConnection()
方法は次のとおりです。
jboss - OSGi で EJB 2.1 Bean を実行できますか?
EJB 2.1 セッションおよびエンティティ Bean を使用する J2EE 1.3 アプリケーションがあります。現在、このアプリは JBoss で EAR ファイルとして実行されます。OSGi が提供するすべての利点のために、SpringSource dm Application Server に切り替えたいと考えています。
EJB コンテナーとして機能する OSGi バンドルがあるかどうかは誰にもわかりませんか? OpenEJBはこれを行うことができますか?
java - プレーンJavaでパッケージを分割する
OSGiには、分割パッケージ、つまり同じパッケージであるが複数のバンドルでホストされているパッケージに問題があります。
分割パッケージがプレーンJava(OSGiなし)で問題を引き起こす可能性があるエッジケースはありますか?
ちょっと興味があるんだけど。
java - OSGiバンドルからコマンドライン引数にアクセスする
OSGiバンドルのコレクションとして実行されるアプリケーションがあります。Felixフレームワークを埋め込んだ非常に小さなラッパーを使用して開始します。そのラッパーの必要性は、Felixに依存しているという事実(たとえば、Equinoxでも同様にアプリケーション自体を実行できる)と同様に、私を少し苛立たせます。したがって、それを取り除き、デフォルトのFelixを使用したいと思います。ランチャー。
ラッパーが実際に行うのは、起動されたOSGiフレームワークにコマンドライン引数を渡すことだけです。これにより、そこでバンドルがそれらに反応できるようになります。実際には引数を解析せず、String[]をアプリケーションにプッシュするだけであることに注意してください。
カスタムランチャーを廃止できるように、バンドルからコマンドラインパラメーターにアクセスするための標準的な方法(または少なくともFelix標準の方法)はありますか?