問題タブ [pax-runner]
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 デプロイメントの実行をプロファイリングする方法は?
いくつかのハードウェア制限のあるデバイスにデプロイされるアプリケーション用の OSGi バンドルの開発を開始しています。そのバンドルの実行をプロファイルして、最終的なデバイスの依存関係に常に適合するようにする方法を知りたいです。各バンドルが使用しているメモリ量を把握し、ボトルネックを特定し、同じサービスの異なる実装を比較するためのプロファイラーがあれば便利です。
OSGi デプロイメント用のプロファイラーはありますか、それとも一般的な Java プロファイラーを使用する必要がありますか?
開発のために、Apache felix で Pax ランナーを使用してバンドルを実行し、maven を使用してプロジェクトの依存関係とビルドを管理しています。
eclipse - OSGi で実行されている GWT アプリケーションをデバッグするには?
GWT を使用して Web UI を開発しています。ウィジェットのみで作業している間は、Firefox 拡張機能を使用して Eclipse からデバッグできましたが、UI を他の OSGi バンドルと統合しているため、このソリューションは使用できません。
GWT アプリケーションをデプロイするために、.war を作成し、それをBNDを使用して OSGi バンドルに変換します。次に、Pax Runner と Pax Web を使用してすべてのバンドルを含む OSGi コンテナーを起動すると、アプリケーションは正しく動作しますが、生成された JavaScript コードで何かが失敗した場合、まともな出力エラーやデバッグ機能がありません。
OSGi から GWT アプリケーションを「デバッグモード」で起動する方法はありますか?
このシナリオで役立つ他のアイデアはありますか?
更新:com.google.gwt.dev.DevMode
からブラウザ コネクタを使用して、またはその一部をインスタンス化することは可能Activator
でしょうか?
osgi - pax-runner を使用した spring-OSGI のログバック
pax-runner でOSGIバンドルを実行しています。slf4j で logback を使用してログを記録しています。
問題は、 logbackがクラスパスで logback.xml を検索しようとすることですが、pax-runnerでは logback.xml をどこに配置して、pax-runner がそれに応じて logback を構成する必要がありますか?
JoranConfigurator を使用して、バンドル クラスパスに含まれる logback.xml をロードしようとしましたが、バンドルが実行されているコンテナーとしてクラスパスを想定しています (私の場合、すべてのバンドル jar が配置されるランナー フォルダーです)。
どんな助けでも大歓迎です。
よろしくお願いします。
intellij-idea - OSGi デバッグ ターゲットを実行しようとすると、「プラットフォームがサポートされていません」がサポートされる
IntelliJ Idea から小さな OSGi プロジェクトを実行しようとしています。Idea の OSGi 構成セクションに Equinox コンテナーを追加しました。次に、OSGi ファセットをプロジェクトに追加しました。この時点ではすべて問題ないようです。
しかし、プロジェクトを実行しようとするとすぐに問題が発生します。IntelliJ Idea の「OSGi Bundles」ランナーを使用します。そこで、プロジェクト バンドルと OSGi コンテナーを選択して実行します。ここから本題に入ります。私はいつも同じエラーメッセージです:
Felix や Knopflerfish などの他の OSGi コンテナーを使用しようとしましたが、同じ問題が発生しました。私が間違っていることを誰かが知っていますか。または、OSGi コンテナーのどのバージョンが IntelliJ でサポートされていますか?
osgi - Pax Runner: インプロセス エグゼキュータの経験はありますか?
私は現在、OSGi アプリケーションを IDE から実行するときにどの pax executor を使用するかを決定しています (使用可能なもののリストについては、http://paxrunner.ops4j.org/space/Executorsを参照してください)。pax runner を使用して IDE からプロセスを実行する場合、基本的に 2 つの選択肢があります。
In-Process-Executor (Pax Runner 自体と同じ Java プロセスで OSGi プロセスを実行します):
- PRO : デバッガーの取り付けが簡単。
- PRO : 2 番目の Java VM が開始されないため、OSGi プロセスを簡単に強制終了できます。
PRO : 起動が速くなります。
CON : paxrunner の機能を非 javaVM 設定に大幅に制限します (これは Pax Runner のドキュメントからのものです)。
Default Executor: (新しい Java プロセスで OSGi プロセスを実行します)
PRO : Pax Runner がさまざまな JavaVM 設定を設定できるようにします。
CON : デバッガーを接続するのが難しくなります (リモート デバッグのセットアップが必要です)。
- 短所: Pax Runner が適切に実行しない場合、OSGi プロセスを強制終了することはほとんど不可能です。
- CON : 2 つの JVM が開始されるため、起動時間が長くなります。
したがって、私の質問は基本的に、Pax Runner の JVM 設定機能が重要であり、インプロセス エグゼキューターを使用すると OSGi プロセスが機能しないというシナリオを誰かが経験した場合です。私はまだそのような例を見つけていませんが、インプロセス、デフォルトのエグゼキューター、またはその両方をサポートするかどうかを決定する必要があるため、デフォルトのエグゼキューターの JVM 設定機能を利用する実際のユースケースは本当に役に立ちますその決定を下します。
osgi - Apache FelixOSGiFrameworkでバンドルを更新する方法
からバンドルを更新するのに問題がありgogo shell
ます。gogo shell
ターミナルで実行しています。私のバンドルはそこでアクティブです。
コードに変更を加えた場合、これらの変更を実行中のOSGiフレームワークに転送するにはどのような手順が必要ですか?
更新を実行しまし<bundleId>
たが、何も起こりません。フレームワークを起動したときにコンパイルされたものと同じバージョンを実行します。updateコマンドの前に、別のターミナルを開いて実行しましたmvn clean install
(とmaven-bundle-plugin
一緒に使用していpax-construct
ます)。
java - PAX(OSGIテスト)フレームワークを高速化するためのヒント
PAXは多くのことを行っており、コンテナーを作成してそれらすべてのjarをコピーするのは安くはありませんが、パフォーマンスを向上させるための一般的なヒントはありますか。コンテナの外部で実行するテストがありますが、内部でははるかに時間がかかります。私は主に、マニフェストが正確であり、依存関係が失われることなくバンドルがデプロイ可能であることを確認するためにPAXを使用しています。私はKnopflerfish、Equinox、Felixを試しましたが、一般的に、ベアボーンコンテナレス実行に対して比較的遅いという違いはほとんどありません。
osgi - war ファイルを Apache Felix にデプロイしますか?
アプリケーションを Apache Felix にデプロイしようとしています。これは gwt アプリケーションでしたが、hello world html ファイルまで問題を単純化してきたので、war ファイルに任意の種類の Web アプリケーションをデプロイすることが問題です。また、生成された war を Apache Karaf にデプロイしようとしましたが、問題なく動作しました (機能 war をインストールすると)。
だから、今私はこれを持っています:
pom.xml は非常に簡単で、興味深い部分は felix プラグインに関連していますが、コンパイルされたコードがないこの戦争では問題ではありません...
アプリケーションを実行しようとしたため、pax プラグインもそこにありますが、同じ結果が得られました。web.xml は空です:
mvn パッケージを実行して war ファイルを生成したら、それを Apache Felix にデプロイすると、エラーは発生しません。バンドルの状態はアクティブですが、/sample パスにアクセスしようとすると 404 エラーしか発生しません。sample と /sample の両方をコンテキストパスの値として入れてみました。mvn pax:run を実行すると、同じ動作が発生します。戦争を Apache karaf に展開するとうまくいくので、felix に何か本当に悪いことをしていると思います。
私の現在のバンドルのリストは次のとおりです。
java - ログバックにはOSGiコンテナーのフラグメントが含まれます
私はファイルのあるプロジェクトa-conf
を持っていsrc/main/resources/logback/conf/a/CommonAppenders.xml
ます:
a-runable
また、私は次をインポートするlogback.xml
configを持つ別のプロジェクトを持っていCommonAppenders.xml
ます:
a-runable
すべての依存関係(そのうちの1つ)が含まれているスタンドアロンのjarで、a-conf
またはOSGiバンドルとしてコンパイルできます。スタンドアロンアプリを実行すると、すべて問題ありません。ログファイルはで指定されたとおりに表示されますCommonAppenders.xml
。しかし、OSGiコンテナーを実行すると、ログファイルは作成されません。OSGiコンテナ内のすべてのバンドルには独自のクラスローダーがあるため、ログバックにはクラスパスからのリソースを含めることはできないと思います(ログバックClassLoader.getResource()
はファイルをインクルードするために使用します)。
チェックインExport-Package: logback.conf.a
しましたa-conf.jar/META-INF/MANIFEST.MF
(これはMavenバンドルプラグインによって実行されます)-問題ありません。効果なしで追加Import-Package: logback.conf.a
されましたa-runable
。
何ができるかわかりません(変更するコードはなく、構成だけです)。どんな助けでも大歓迎です。
PSここでも同様の問題が見つかりましたlogback.xml
が、すでにクラスパスにあり、独自のアペンダーは正常に機能します。FileNotFoundException
また、既存のログにsがありません。
jenkins - jenkinsへのOSGiベースのアプリケーションの継続的デプロイ
OSGiベースのアプリケーションの場合に継続的デプロイを機能させる方法を理解するために数時間を費やした後、私はついにスタックオーバーフローに関する最初の質問を提起し、私が間違ったことや見逃したことについてのいくつかの兆候を期待しています-どういうわけか間違った方向に進んでいるように感じます...
これが私が達成したいことです:
いくつかのバンドルをビルドし、それらをMavenリポジトリにインストールします(ここでは問題ありません。bndを使用します)
これで、アプリケーションを構成するすべてのバンドル(すべてのテストに合格するなど)ができたので、アプリケーションをデプロイして実行します。つまり、それらのバンドルを使用してOSGiフレームワークを起動します。
開始は問題ではありません-「mvnpax:provision -Dframework=equinox」がトリックを行います。私のアプリケーションはjettyを起動するので、ブラウザーを介して問題がないかどうかを簡単に確認できます(すべてのテストに加えて)
しかし、今、「継続的」であることを試みて、次にこの手順を適用したいときは、最初にアプリケーションの実行中のインスタンスをシャットダウンすることを確認する必要があります(少なくとも使用されているポートを解放します)。したがって、すべてを再実行するには、最初に古いインストールをシャットダウンする必要があります。
そして、これが私の質問の始まりです。これを手伝ってくれるものはありますか?maven-deploy-pluginがあることは理解していますが、これはWAR / EARファイルを標準のアプリケーションコンテナーにデプロイする場合にのみ役立つようです(再起動する必要はないようです)。
私は本当にOSGi環境を起動するためにいくつかのスクリプトを実行する必要があるだけです-そして次に、それを再び起動する前にそれを正常にシャットダウンします。tomcat、jetty、jbossなどには、shutdown.shスクリプトまたはmvn jetty:stop命令がいくつかありますが、これらの種類のスクリプトを自分で作成する必要がありますか?これは私が間違った方向に進み始めていると思うところです、誰かが私の前にそれらの問題を抱えていて、私が推測するそれらを解決したに違いありません;)
どういうわけかJMXを使用するか、telnetコンソールを使用して実行中のインスタンスにアクセスして「stop0」コマンドを発行できることを理解しましたが、これは間違っていると感じます。
jenkinsから開始されたプロセスは、プロジェクトをコンパイル/ビルド/デプロイする必要がありますが、実行時間の長いスレッドは開始しないと思います。そのため、次に再試行するときに最初に強制終了したいプロセスを「外部」で開始する必要があります。
何か案は?多分私は何かが欠けていますか?これに関するご意見をよろしくお願いします!