問題タブ [gogo-shell]
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 - SSH を使用する Apache Felix シェル
SSH で Apache Felix を使用する方法に興味がありますか? SSH を使用してリモート コンピューターから Felix シェルにアクセスしたいと考えています。telnet のサポートがあることは知っていますが、あまりにも安全ではありません。解決策はありますか?
osgi - gogo カスタム コマンドの使用時に生成される例外
bndtools チュートリアル ( http://bndtools.org/tutorial.html#write-a-command-component ) の情報を使用して、felix gogo カスタム コマンドを作成しました。
使用したコードは以下です。
ActualUser クラスには textClient() というメソッドがあることに注意してください。このメソッドは、今のところメッセージを出力するだけです。
Bnd Annotations 宣言型サービスを含め、ビルドと実行の bnd ファイルに適切なものを設定します。また、必要なすべての Gogo バンドルがランタイムに含まれています。
「ヘルプ」を実行すると、以下を含むコマンドのリストが表示されます。
ここで、「texter:text」は追加したコマンドです。
テキストコマンドを使用しようとすると、次のエラーメッセージが表示されることを除いて、すべて問題ないようです。
2 番目のエラー メッセージは理解できたと思います。コマンドを機能させるには、文字列が必要です。最初の失敗はわかりませんが。
このコマンドが機能しない理由を知っている人はいますか? これらの InvocationTargetExceptions の原因は何ですか?
さらに重要なことに、どうすればそれらをなくすことができますか?
誰かアドバイスください...
osgi - Felix GoGo シェルが MalformedURLException をスローする: 不明なプロトコル: Equinox の bundleresource
ZAPという Java アプリケーションの拡張機能を作成しています。拡張機能は、Equinox バンドル ( )がインライン化された fat/uber jar です。追加のバンドルも、この jar のサブディレクトリ内に含まれています。OSGi フレームワークは、How To Embed OSGiで説明されているように開始されています。org.eclipse.osgi
bundles
Eclipse の「コンソール シェル」ドキュメントで概説されている手順に従って、Felix GoGo シェルを機能させようとしています。次の必須バンドルを指定します。
org.apache.felix.gogo.command
org.apache.felix.gogo.runtime
org.apache.felix.gogo.shell
org.eclipse.equinox.console
Equinox / に加えてorg.eclipse.osgi
。Equinox はクラスパス上にないため、org.osgi.framework.system.packages.extra
構成をExport-Package
Equinox のバンドルで指定された値に設定します。
フレームワークが ACTIVE 状態になると、Eclipse で (または Eclipse の外部のコマンド ラインを介して) 次のスタック トレースが表示されます。
Equinox URL ハンドラが GoGo で使用されていないようです。それらに関連する次のパッケージが Equinox の にないことに気付きましたExport-Package
:
org.eclipse.osgi.storage.url
org.eclipse.osgi.storage.url.bundleresource
org.eclipse.osgi.storage.url.bundleentry
そのため、それらもorg.osgi.framework.system.packages.extra
パッケージリストに含めました。それは役に立ちませんでした。
それ以外の場合、明らかなエラーなしでバンドルがインストールおよび開始されます。
GoGo で Equinox のカスタム URL ハンドラを利用するにはどうすればよいですか?
更新 1: 多分レッドニシン
ランダムなトラブルシューティングでは、ここで概説されているように、最終的なシェーディング jar を実行したいと考えていました。org.eclipse.osgi
元のバンドルと影付きの jar の両方を同じディレクトリにコピーしました。ロードするconfiguration/config.ini
バンドルを指定しています。
ストック バンドルを実行すると、コンソールが表示されます。
影付きの jar を実行しますが、それほど多くはありません。
これは完全なニシンかもしれません... 私は OSGi について非常に無知です。これは私の最初の実践的な経験です。ただし、シェーディングされた jar は、在庫の Equinox jar と同じように実行されると思います。なぜ違いがあるのか わからないので、掘るのに適した場所がないのでそこを掘るつもりです...
更新 2: クラスパス上の Equinox の回避策の問題
Equinox バンドルをディレクトリ経由で ZAP のクラスパスに追加lib
し、拡張 jar にインライン化されないようにしました。これをServiceLoader.load
実行し、クラス ローダーを含めないように呼び出しを調整すると (システム クラス ローダーがデフォルトになります)、次のように動作します。
根本的な問題は、おそらくファイルに関連して、jar がどのようにインライン化されているかである可能性がありMANIFEST.MF
ます。関連している可能性がありますが、 の値を指定する必要がなくなりましたorg.osgi.framework.system.packages.extra
。
OSGi ライブラリをシェーディング アーティファクトとして含めることが本来の目的だったので、この質問には答えないままにしておきます。たぶん bndtools が役に立ちますか?
java - バンドル要件が Apache Felix Log で満たされていない理由を確認する方法は?
ファイル インストール バンドルを使用して組み込みモードで Felix を使用しており、インストール済みだが解決済みではない (したがって開始/アクティブではない) バンドルがあり、根本的な原因を見つける必要があると思っていた以上に苦労しています。ログに...
「解決できません...理由...」または「BundleException:バンドル内の未解決の制約...解決できません...要件がありません... osgi.wiring.package」のような役立つものをどのように/どこで入手しますかFelix フレームワークおよび/またはファイル インストール バンドルから自動的に、ログ内のメッセージの 私はそのようなものを見ていません - 私はそうすべきですか? どこ?
ロギングも追加しました ( Apache Felix Logおよびosgi-loglistener-slf4j を介して) が、まだ - (Embedded) Felix でこの種の問題のロギングを有効にするために、私が行った以上のことを行う必要がありますか?
次に、Felix Gogo Shell CLI を追加しましたが、そのinspect
コマンドもあまり役に立たず (解決されていないバンドルでは機能しません)、start
根本的な原因のみが表示されることがわかりました。コンソールを用意して開始する必要なく、ログに記録します。
OSGi の非同期バンドルの初期化により、依存バンドルが起動するのを待たなければならない場合があるため、失敗したバンドルの開始をいつログに記録するかが明確でない可能性があることは理解していますか? ある種の猶予期間の後、この種のエラーをログに記録できませんでしたか?