問題タブ [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.

0 投票する
7 に答える
3778 参照

eclipse - scala で eclipse rcp アプリケーションを作成するには?

Scala Eclipse プラグイン ページには次のように記載されています。

このサポートはどのように機能しますか? Scala プラグインを作成するためのウィザードはありません。Eclipse プラグイン/RCP アプリケーションで Scala を使用する方法に関するドキュメントは見つかりませんでした。それは可能ですか?

0 投票する
1 に答える
1549 参照

java - Felix/OSGi: OSGi サービスではない SCR コンポーネントを使用するには?

Apache Felix の SCR を使用すると、インスタンス化され、依存関係に接続され、OSGi サービスとして登録されるコンポーネントを (注釈または XML を介して) 宣言できます。

サービス登録の部分をスキップして、SCR にコンポーネントを作成させることもできます ( @scr.component を指定し、 @ scr.serviceを省略します)。これは (バンドル内の) 依存性注入だけに役立つかもしれないと考えていましたが、コンポーネントをどのように消費するのでしょうか? サービスはscr.referenceを使用して注入できますが、これは非サービスでは機能しません (または機能します)?

SCR API に直接アクセスすることはできますが、コンテナー サービスと直接対話することは、DI の目的を無効にします。

0 投票する
3 に答える
283 参照

eclipse - プラグイン間で提供される拡張ポイント データを制限する

私が構築している 2 つの Eclipse プラグインがあります。それらをプラグインAとプラグインBと呼びましょう...

プラグイン A を実行するにはライセンスが必要で、プラグイン B は世界中で無料です。プラグイン A がデータを提供する (場合によってはオーバーライドする) 拡張ポイントをプラグイン B に作成しました。プラグイン A がライセンスされていない場合、プラグイン B のそのデータを無視する方法を見つけたいと思います (プラグインが起動できるかどうかを確認する必要はありません)。

私がそのような偉業を成し遂げることを可能にするそのようなメカニズムは日食にありますか? 私の現在の回避策は、プラグインが(バンドルを介して)開始されているかどうか、および開始しようとしていないかどうかを確認することです。プラグイン A がライセンスされていない場合、start()メソッドで例外をスローします。

0 投票する
5 に答える
2788 参照

java - 組み込み OSGi またはアプリケーション バンドル

この 2 日間、手に入れることができるすべての OSGi の情報を読み上げましたが、ようやく理解できたと思います。

私は現在、サードパーティのプラグイン、自動更新などの多くの理由から、SOA を既存のアプリケーションと統合しようとしています。

私は今、下すのに苦労している決断を下しています。それは天気です

  1. アプリケーション全体が、デフォルトでコンテナーにインストールされる OSGi バンドルになるはずです。また
  2. 私のアプリケーションは、埋め込まれた OSGi コンテナーを起動し、プラグインされたすべてのサービスに対してそれと対話する必要があります。

これにより、アプリケーションを簡単に更新でき、アーキテクチャの一貫性が保たれるため、1 をお勧めします。もちろん、アプリケーションを多数の小さなバンドルにリファクタリングする必要があると予想しています。ただし、2 を使用すると、短期的にははるかに簡単になりますが、将来的には扱いにくくなります。

0 投票する
2 に答える
1530 参照

jboss - OSGI の問題に関する ATG taglibs

現在、SLING/OSGI で ATG taglibs を必要とするアプリを作成しています。これらの taglibs を含むバンドルを作成してアップロードしました。もちろん、これらの taglibs は ATG クラスを呼び出すため、sling.properties ファイルを使用して bootdelegation に含めています。 .

sling.bootdelegation.simple=atg.nucleus sling.bootdelegation.class.atg.nucleus.Nucleus=atg.appassembly, \ atg.appassembly.ant, \ atg.appassembly.progress, \ atg.appassembly.util, \ ...等...

最初に、次のエラーが発生しました。

org.apache.sling.api.scripting.ScriptEvaluationException: atg/taglib/dspjsp/ImportBeanTag at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:163) at org.apache.sling.scripting org.apache.sling.engine.impl.request の org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:226) の .core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:107) .RequestData.service(RequestData.java:465)

....

.... 原因: java.lang.NoClassDefFoundError: atg/taglib/dspjsp/ImportBeanTag at org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0(center_jsp.java:177) at org.apache. jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService(center_jsp.java:154) org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet. http.HttpServlet.service(HttpServlet.java:810) で

そのため、bootdelegation sling.properties ファイルに追加するパッケージに atg.taglib.dspjsp を追加しました。

次に、次のエラーが発生しました。

org.apache.sling.api.scripting.ScriptEvaluationException: atg.taglib.dspjsp.ImportBeanTag at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:163) at org.apache.sling.scripting .core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:107) at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:226) at org.apache.sling.engine.impl.request .RequestData.service(RequestData.java:465) ...

原因: java.lang.ClassCastException: atg.taglib.dspjsp.ImportBeanTag at org.apache.sling.scripting.jsp.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:125) at org.apache.jsp.apps. mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0(center_jsp.java:177) org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService(center_jsp.java:154) org.apache.sling.scripting. jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

これはすべてJBOSSで実行されています。

キャスト例外の原因となっているこのクラスの競合を回避する方法はありますか?

0 投票する
1 に答える
1812 参照

eclipse - Eclipse 機能統合テストのベスト プラクティス

Equinox Declarative Services (DS) を使用して実行時にプラグインを結び付け、いくつかの Eclipse プラグインで構成される Eclipse 機能を開発しています。分点構成を検証するための統合テストを追加したいと思います。

特に確認したいのは、

  • サービス コンポーネントは期待どおりに結合します
  • バンドルがアクティブ化されます
  • プラグインは期待どおりに情報を共有します(編集 2を参照)

さらに、この統合テストを、Eclipse PDE ヘッドレス ビルドを使用した継続的統合プロセスの一部にしたいと考えています (ここここで説明されているように)。

私の質問は次のとおりです。私が特定した制約内でこのタイプの統合テストを容易にするフレームワーク、ツール、またはプラクティスをお勧めできますか?

これまでに 2 つのリードを見つけました。

  • Spring Dynamic Modulesには、OSGi 統合テスト用のフレームワークが含まれています。ただし、簡単な Spring DM テストを Eclipse 内で実行することはできませんでした。「プラットフォームは既に実行されています」と不平を言います。
  • Pax Exam (以前の Pax Drone) は、もう 1 つの OSGi 統合テスト フレームワークです。

編集:明確にするために、各プラグインには、コンポーネント定義xmlファイルで構成されたOSGiサービスコンポーネントがあります。これらの構成ファイルの 1 つに誤りがあっても、プラグインの依存関係が壊れることはなく、実行時まで簡単に気付かれない可能性があります。このような障害を検出するには、統合テストが必要です。

編集 2 : これまでのところ、マルチプラグイン Eclipse 機能は機能/製品レベルで統合テストされていないという Uri の主張 (以下を参照) を確認するために、私が見たものはすべて確認しているようです。サービス コンポーネントが正しくバインドされていることを少なくとも自動的に確認できるのであれば、包括的な統合テストを実行しなくてもかまいません。

私のアプローチ(まだ機能していません):

Eclipse Plug-in Test 起動構成を使用してコードを実行し、Eclipse 製品を「実行するプログラム」として起動しています。テストを実行すると、バンドルがアクティブであることを確認できますが、サービス コンポーネントはアクティブにならず、getServicesInUse メソッドと getRegisteredServices メソッドは null を返します。遅延アクティベーションの問題である場合に備えて、各バンドルからクラスをロードしましたが、それは役に立ちませんでした。また、すべてのサービス コンポーネントが「即時」コンポーネントであることも確認したため、バンドルがアクティブ化されたらすぐにアクティブ化する必要があります。 Equinox DS がその魔法を発揮しないのはなぜですか?

0 投票する
2 に答える
1711 参照

java - OSGi を使用しているときにバイトコード操作を行うことは可能ですか?

私はアプリケーションサーバーを作成していますが、その中でいくつかのバイトコード操作を使用する必要があります (例:で注釈が付けられたクラスにカスタムequalsとメソッドを挿入する)。ここで、 ASMを使用してバイトコード変換を行う Java エージェント ( -javaagentオプション) をJVM に与えます。hashCode@Entity

OSGiの使用を検討していますが、必要なバイトコード操作を実行できるかどうかはわかりません。

  1. OSGi を使用しているときにバイトコード操作を行うことは可能ですか? どのように?
  2. バンドルが動作するために何らかのバイトコード操作が必要であることを宣言することは可能ですか? たとえば、アプリケーション サーバーでは、独自のコア クラスの一部を操作する必要があります。
  3. 他のバンドルが何らかのバイトコード操作を必要とすることを、そのバンドルが知らずに指定することは可能ですか? たとえば、サーバー上で実行されるすべてのアプリケーションは操作する必要がありますが、アプリケーションはそれを知る必要はありません。
  4. バンドルが依存するすべてのバンドルをバイトコードで操作する必要があることを宣言することは可能ですか? @Entityこれにより、アノテーションを含む API バンドルに依存するすべての人を操作する必要があることを簡単に宣言できます。
0 投票する
11 に答える
20613 参照

java - 使用するリッチ クライアント プラットフォーム

最近 Java デスクトップ アプリの開発を開始しましたが、経営陣から Rich Client Platform を利用するように依頼されました。私はJavaの4つ、つまり次のことを知っています。

  1. Eclipse RCP - Eclipse RCPへの www リンク
  2. Netbean RCP - Netbeans RCP Web サイト,
  3. Spring RCP -春のリッチクライアント
  4. Valkyrie RCP - Valkyrie リッチクライアント

誰かがこれらのいずれかで何らかの経験をしたことがありますか?もしそうなら、それぞれの長所と短所は何ですか?

ありがとう

0 投票する
1 に答える
209 参照

osgi - iPOJO: InstanceManager の getPojoObject() が null を返すのはなぜですか?

私は Felix OSGi iPOJO ライブラリを使用しており、プログラムでファクトリにアクセスして ComponentInstances を作成しています。ここでコードを読みました:

http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/java/org/apache/felix/ipojo/InstanceManager.java?view=markup

getPojoObject() への呼び出しが null を返す理由を突き止めようとしました。

私の質問は、getPojoObject() メソッドが null を返す可能性がある条件は何ですか?

編集:私が今求めていることを理解していると思います-TofuBeerが指摘したように、オブジェクトのインスタンス化に何らかの問題がある場合はいつでもnullを返すことができるとJavaDocで述べています-これは返すのに役立つ値ではなく、方法それが処理されると、実際のエラーが何であるかが隠されます。余分な目をありがとう、TofuBeer、これは私を夢中にさせていました。

0 投票する
5 に答える
1616 参照

java - モバイル OSGi は、携帯電話で実際に使用する準備ができていますか?

モバイルデバイス向けのアプリケーションを開発しています。私は OSGi 用に開発したことはありませんが、今から始めようと考えています。

携帯電話で OSGi を使用することについてよく読んだことがありますが、J2ME、Symbian、Windows Mobile、Android で動作すると言われています。

私は OSGi の多くの利点を活用したいと思っていますが、OSGi がなくてもできることはわかっています。また、自分の電話で OSGi を使用できないユーザーや、電話を OSGi に対応させるために複雑なセットアップ プロセスを経なければならないユーザーを排除したくありません。

そして、これらの安価な J2ME 携帯電話のほとんどが OSGi のような洗練されたものを実行できるとは信じられません。1000 ドルのスマートフォンの話ではなく、たとえば Sony Ericsson から 100 ドル (または公平を期すために 200 ドル) で入手できる消費者向けデバイスについて話します。

モバイル OSGi は現在、真の代替手段ですか?それとも、将来的に使用するための良い展望にすぎませんか?

編集: これまでのところ、答えは 1 つしかなく、モバイル OSGi の使用にはほど遠いと述べられています。しかし、私にとっての答えの 1 つは、重要な決定の基礎となる人が少ないことです。そのため、報奨金がより多くの読者を引き付けることを願っています。

これ以上回答が得られない場合、それは誰もモバイル OSGi の経験がないという兆候であり、私はそれを探求する最初の人になりたくないと結論付けます。通常、私は新しいテクノロジーを試すのが大好きですが、今回は間違った馬に賭けることが非常に重要です.