問題タブ [embedded-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.
java - OSGI コマンドライン アプリケーションの作成方法
私は現在、OSGI に慣れていて、OSGI のユースケースを少し特殊なものにすることにしました。コマンドラインアプリケーションで使用したいと思います。main(..)
いくつかのフラグと引数を取り、何かを実行して再びシャットダウンするメソッドが必要です。私が望んでいないのは、Apache Karaf (または同様のもの) を起動して、OSGI コンソール内でコマンドを実行することです (ただし、これはオプション機能になる可能性があります)。
そもそも、なぜコマンドライン アプリケーションに OSGI を使用するのでしょうか? アプリケーションは、同じライブラリの異なるバージョンを使用することになっています ( elasticsearchです)。もちろん、それはもちろん悪いからです。
バンドル内またはバンドル外でサービスを使用する必要がありますか? どうすればそれを行うことができますか?どのような問題が発生する可能性がありますか?
java - OSGi で選択する必要がある FrameworkFactory のパッケージはどれですか?
最近、OSGi フレームワークを使い始めました。Maven ベースのプロジェクトから OSGi コンテナーを起動しようとしています。
上記のmavenプロジェクトのpom.xmlファイルにこの依存関係を追加しました-
以下は私の主なアプリケーションです-
のパッケージをインポートしようとすると、FrameworkFactory
2 つのオプションから選択できます。以下はイメージです。ここでどれを選択する必要があるか、誰か助けてもらえますか?
私はこの2つを選んでいたのですか?
これは正しいですか?
java - ビルド ツール 16 が見つかりません。17 を使用できますか?
私はAndroidの世界では比較的新しいので、私の質問が意味をなさない場合は、新しい人に我慢してください.
AndroidでOSGi環境を実行できるように、いくつかのjarをdexifingする必要があります。私の問題は、ビルドツール リビジョン 16 を SDK マネージャーでダウンロードできないことです。
この両方のリンクで直接ダウンロードを試みました:
http://dl.google.com/android/installer_r16-windows.exe
http://developer.android.com/sdk/older_releases.html
最初のバージョンにはマネージャーがあり、バージョン 16 をダウンロードせず、代わりにバージョン 22.x をダウンロードするように強制され、2 番目のバージョンにはビルド ツールがありません。
だから:私の電話にAndroid 4.1(API 16)がある場合、ビルドツール17のdxコマンドを使用できますか?
誰かが今、なぜ私がしようとしているだけではないのか疑問に思っているなら. これは、簡単には機能しないと思われる jar がいくつかあるため、開始する前に問題の原因を回避し、解決しなければならない問題がわからないためです。
PS: 既に開発されたソフトウェア (ミドルウェア) を実行するために OSGi を実行したいので、dexifing がなくてもこれを可能にする助けがあれば役に立ちます (複雑さと時間の点で合理的であれば)。
servlets - Apache Felix サーブレット ブリッジのセットアップ
サーブレットを OSGI バンドルで拡張可能にしようとしています。新しく追加されたバンドルもサーブレットでなければなりません。Felix http://felix.apache.org/documentation/subprojects/apache-felix-http-service.htmlによって提供されるサーブレット ブリッジ機能があります。Felix の Web ページにあるように、サーブレット ブリッジをセットアップするには、次のことを行う必要があります。
- Web アプリケーション (WEB-INF/lib) 内に org.apache.felix.http.proxy jar ファイルをデプロイします。[終わり]
- 起動リスナー (ServletContextListener など) で、BundleContext をサーブレット コンテキスト属性として設定[DONE]
- web.xml 内で org.apache.felix.http.proxy.ProxyServlet を定義し、すべてのリクエストでサービスを提供するように登録します[DONE]
- org.apache.felix.http.proxy.ProxyListener を web.xml で として定義して、HTTP セッション関連のイベントを転送できるようにします[完了]
- 必ず javax.servlet;javax.servlet.http;version=2.6 を OSGi システム パッケージに追加してください [必須ではありません]
- OSGi フレームワーク内に org.apache.felix.http.bridge (または org.apache.felix.http.bundle) をデプロイします[????]
私の場合、手順 6 ではサーブレット ブリッジを機能させるには不十分なようです。バンドル サーブレットに対してすべての手順 1 ~ 5 を実行しました。私のメイン サーブレットには OSGI 組み込みメカニズムがあるため、Java コードからバンドルをデプロイします。これは OSGI ランチャーのコードの一部です。
メインのサーブレット コードから、必要なorg.apache.felix.http.bridge
バンドル、サーブレット バンドルのいくつかの依存関係 (slf4j、javax.servlet...)、および手順 1 ~ 5 に従って作成したサーブレット バンドルをインストールします。デプロイの結果: サーブレット バンドルで使用できる HttpService がありません。アプリケーションで使用できないため、サーブレット バンドルにサーブレット インスタンスを登録する方法がありません。
MANIFEST.MF を見ると、次のorg.apache.felix.http.bridge
ような言及は見つかりませんでしたExport-Service: org.osgi.service.http.HttpService
。このバンドルを使用するにはどうすればよいですか? サーブレット ブリッジをセットアップするにはどうすればよいですか?
servlets - Equinox のサーブレット リスナーと MIME タイプのサポート
bridge.war を使用して tomcat 7.x に分点フレームワークを組み込みました。
http://www.eclipse.org/equinox/server/http_in_container.php
サーブレット登録コードを含む osgi バンドルを開発しました。予想どおり、このサーブレットはブリッジ上で実行されます。
私の目標は、この osgi バンドルでサーブレット API と web.xml 機能をサポートして、既存の Web アプリケーションを osgi に移植できるようにすることです。
今のところ、「org.eclipse.equinox.http.servlet.ExtendedHttpService」を使用してサーブレット フィルターとサーブレットを登録しています。
ただし、ExtendedHttpService にはサーブレットリスナーを登録するメソッドがありません。
サーブレット登録コードを含むosgiバンドルでサーブレットリスナーとMIMEタイプをサポート/登録する方法を教えてください。
tomcat - tomcat にデプロイされた OSGI equinox バンドルからの JNDI ルックアップ (ブリッジ モード)
tomcat\context.xml でデータソースを構成しています。サーブレットブリッジ環境を取得するために、Eclipse が提供する bridge.war をデプロイしました。
サーブレット登録コードを含む別の osgi バンドルを開発しました。私の目的は、このサーブレット バンドルからデータソースを JNDI 検索することです。
しかし、私は得る
OSGI バンドルのコードをたどろうとすると
osgi コンテナーに catalina.jar を追加し、osgi バンドルの依存関係としても追加しました。
bridge.war の launch.ini は次のようになります。
誰かがそれを手伝ってくれますか?