問題タブ [bnd]
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 バンドル .bnd ファイルと競合する import-package ステートメント
インポート !javax を持つ .bnd ファイルを継承しました。、そしてそのステートメントを取り出すと、私のプログラムは実行時エラーを生成します。現在、javax.help の下にあるアプリケーションに JavaHelp を追加する必要があります。. .bnd にこれらの両方のインポートがあり、JavaHelp のクラスを使用すると、javax.help.JHelp などの特定のクラスに対して ClassNotFoundException が生成されます。この状況を処理する方法はありますか?
java - Service.FindHook イベントは、コンポーネントへのサービス参照の追加によって呼び出されませんでした
FindHook
今日、私は OSGi フック、特にサービスとサービスのために少し作業しましたEventListenerHook
。プロキシサービスを試してみたかった。正常に動作し、私のEventListenerHook
サービスはプロキシされています。しかし、関連するメソッドに(Bnd スタイル)FindHook
のアノテーションを付けて、サービスがサービス実装の参照を取得すると、イベントが呼び出されないことに気付きました。アノテーションの問題ではなく、DS 全般の問題かもしれません。setXXX
@Reference
これは非常に悪いことです。bc には、プロキシなしとプロキシ付きの 2 つのサービスが登録されています。プロキシされたものからのみ参照を取得したい。一般に、DS を使用しない場合、呼び出すことで参照を取得できBundleContext.getServiceReference(java.lang.Class<S> clazz)
、イベントFindHook.find
が呼び出されます。ここで、どちらServiceReference
を返すかを決定できます。
DS のようなアプローチを使用すると、どのようなプロセスが実行されますか (私にとっては Bnd アノテーション@Reference
)。上記のセクションで説明したように、どのサービスを参照するかを決定したいと考えています。
maven - BND経由でMaven POMをOSGiラッパーに入れますか?
OSGi 環境で使用したいサードパーティ JAR がありますが、OSGi に適した MANIFEST.MF がありません。だから、私はそれをラップするためにBND(まあ、BNDTools)を使っています。それはうまくいっていますが、次のようになります。
また、Maven (これもセットアップされていません) で簡単に使用できるようにしたいので、その依存関係を説明する Maven POM を含めたいと思います。BNDを介してこれを行う方法はありますか? これが私が試したことです:
さまざまな Mavenized JAR のレイアウトを調べたところ、META-INF/maven/groupId/artifactId に POM が含まれているように見えました。例えば:
そこで、POM を作成してそのような場所に配置し、bnd.bnd を次のように変更しました。
ただし、生成された JAR にはファイルが含まれません。
おそらく「-include」に関する BND のドキュメントを読み間違えていると思います (100% 確実ではありませんが)。JAR に余分なファイルを含めるのではなく、結果の MANIFEST.MF に余分なマニフェスト ディレクティブを含めるためのようです。
しかし、いずれにしても、BND を使用してやりたいことを達成する方法はありますか? それとも、別のリラッパー プログラムを使用して POM で JAR を作成し、元の JAR をリラップするのではなく、BND を使用してリラップする必要がありますか?
助けてくれてありがとう。
java - 抽象クラスでのDIメソッドの提供
ほとんどの場合、OSGi宣言型サービスによって注入される同じクラスを持つコンポーネントがたくさんあります。これらのサービスは、すべての派生コンポーネントで同じロジックを実行するために使用されます。したがって、コードの重複を避けるために、抽象クラスを使用するのが最善です。DI参照メソッド(設定/設定解除)を抽象クラスに移動する可能性はありますか?私はBndを使用しています。
例えば:
ServiceC
のセッターとメソッドexecuteSomethingDependendOnServiceC()
を抽象クラスに移動したいと思います。しかし、Bndアノテーションに関連するOSGiではどのように見えますか。抽象クラスのさまざまなインスタンスを作成し、@ Componentもインスタンスを作成するためA
、@Componentでクラスにアノテーションを付けるだけでは機能しません。D
誰かが同じ問題を経験し、回避策がどのように見えるかについてアドバイスをくれるかもしれません。少なくともベストプラクティスの解決策も問題ありません:)
java - ゼロからバンドルに org.apache.felix.scr アノテーションを使用する方法は?
私は apache felix のバンドルの開発を開始し、ops4j pax プラグインを使用してそれを行いました。
でプロジェクト構造を作成しpax-create-project
、そこで通常のpax-create-bundle
. 次に、maven で全体を構築するための初期プロジェクト構造を取得します。ここで重要な点は、バンドルには独自の pom ( bundlename/pom.xml
) と bnd ファイル ( bundlename/osgi.bnd
) がありますが、の構成maven-bundle-plugin
は で既に提供されているということpoms/compiled/pom.xml
です。バンドル メタデータは以下で構成されますpoms/compiled/pom.xml
が、標準のアクティベーターは上記のosgi.bnd
ファイルの下で構成されます。bnd ファイルのデフォルトはBundle-Activator: ${bundle.namespace}.internal.ExampleActivator
.
今、私はからの注釈の使用を開始したかったorg.apache.felix.scr
ので、依存関係の下のバンドル独自の pom にこれを含めました:
そして、サービス用のインターフェースを作成しました:
からの注釈を使用した実装と同様にorg.apache.felix.scr
:
osgi.bnd
コンポーネントを開始するには、ファイルに何を配置する必要がありますか? BundleActivator をもう使用していないため、上記のデフォルト エントリを削除する必要がありました。
ここで質問があります。バンドルを開始して出力を表示できるようmvn clean install pax:provision
に、felix 環境を起動するには、上記のファイルに対して何をする必要がありますか? 私も開始しているApache Log Serviceのログ出力をすでに見ましたが、次のように表示されます。
どんなヒントでも大歓迎です。またはリンク、私は何時間も検索して、scr とバンドルに maven プラグインを使用するための完全なガイドを見つけました。
こんにちは、シェルスキー
ant - bndwrap ant タスクが機能しない
jTDS の最新バージョン用の OSGi ラッパーを作成しようとしています。既存の jTDS ビルド プロセス (Ant ベース) にラッピング プロセスを追加しようとしています。最新の bnd.jar をダウンロードし、jTDS build.xml に以下を追加しました。
また、非常に単純な bnd 定義も定義しました。
Ant でタスクを実行するdist
と、適切な OSGi マニフェストで JAR が作成されます。別の JAR を作成していますが、マニフェストは元のものと同じです。
bnd JAR に対して直接同じラップを実行すると、次のようになります。
正しい OSGi マニフェストを取得します。
Ant ビルド中に何がうまくいかないのですか?
java - maven-bundle-pluginを使用したJARのインデックス作成
2.3.7META-INF/INDEX.LIST
を使用して、インデックス()を持つバンドルを構築しようとしています。maven-bundle-plugin
私のプラグイン構成は次のようになります
ただしMETA-INF/INDEX.LIST
、JARには表示されません。使ってみました
しかし、それは失敗します
これは、Maven Archiverに含まれていMETA-INF/INDEX.LIST
ないが、動的に生成されるため、驚くことではありません。target/classes
編集1
jar
パッケージングの代わりに使用するとbundle
、インデックスが表示されます。
編集2
Maven3.0.4を使用しています
java - Maven Bundle Plugin (BND) を使用して、別の依存関係に存在する依存関係から名前付きパッケージを除外する方法は?
2 つの依存関係があります。
両方の依存関係エクスポート パッケージ:
- org.postgres
Maven Bundle Plugin のwrapコマンドを使用しているときに、postgis-jdbc からorg.postgresのエクスポートを除外するにはどうすればよいですか?
osgi - OSGiおよびVirgoツール:Mavenプロジェクトを追加できません(bnd mavenプラグインを使用)
私はOSGiを初めて使用し、いくつかのバンドルのみをコーディングして手動でデプロイしました。私の友人の何人かは、Eclipseで管理するバンドルを自動展開できるVirgoおよびVirgoツールについて教えてくれました。
私は現在、これらすべてを設定しようとしています。私はvirgo-tomcat-server-3.5.0.RELEASEとvirgotools1.0.0を持っており、これらすべてがSpring Tool Suite 3.1.0.RELEASEにインストールされています(わからない場合は、この最後の1つにm2eclipseプラグイン)。
私のバンドルはMavenプロジェクトです。これはbndプラグインを使用し、その構成は次のとおりです
1つのパッケージのみをエクスポートしていることがわかります。また、eclipseがクラスをコンパイルするときに、m2eclipseを作成してmanifest.mfファイルを動的に生成しようとしています。
私はついに私が直面している問題にたどり着きます。
バンドルをMavenプロジェクトとしてSTSにインポートするため、Virgoファセットを追加する必要があります。そして、Maven構成を更新するとすぐに、プロジェクトが台無しになり、次のエラーが発生します。
/li>私の(くだらない)Maven構成からのアパート、私は自分のプロジェクトをvirgoサーバーに追加できないことに気づきました。
/li>
誰かが手がかりを持っていますか?
maven - ライブラリをOSGIfyする方法
私はプロジェクトに取り組んでいます。それは統合プロジェクトです。ApacheCamelとApacheKarafを使用しています。プロジェクトでは、JiraRESTJavaクライアントライブラリを使用する必要があります。
そのため、非OSGIライブラリをOSGIバンドルにラップする方法について、さまざまな記事やスレッドをたくさん読んだことがありますが、それが正しいかどうかはよくわかりません。
そこで、必要なライブラリに依存するPOMファイルを作成しました。パッケージを作成してKarafにデプロイしようとしましたが、もちろん、Karafはパッケージが不足していると不満を漏らしました。
だから、私は対応するMavenの依存関係を見つけ、それを追加し、パッケージはに<Import-Package>
、依存関係はにになり<Embed-Dependency>
ます。
別のラウンド、デプロイ、依存関係の検索、追加、...そして何度も何度も、Karafがバンドルで問題がなくなるまで繰り返します。
それは本当に正しいですか?私にはかなり狂ったように見えるので、私はいつものようにそれを持っていないと思います:)
最後に、パッケージは仕事用のコンピューターにあった安定した状態になり、すぐにチェックして家に帰りました。そこで続けましたが、奇妙なことに、パーソナルコンピューターでコンパイルされた同じPOM /パッケージが機能せず、パッケージが見つからないという苦情がありました。しかし今回は、このパッケージは確かにPOMファイルにあり、パッケージに埋め込まれていることは確かです。そこで見ることができます。
この欠落しているパッケージは、今回はorg.apache.commons.codecです。
だから、今私は完全に混乱しています、何が悪いのですか:(
かなりお願いします、みんな、助けてください。ありがとう!
POMファイルが長いので、リンクの方が良いと思います:http: //pastebin.com/j5cmWveG