問題タブ [blueprint-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.
osgi - サービス内から OSGI/ブループリント サービスを登録解除する方法は?
私のアプリケーションには Service ChatProtocolClient があります。実装は、ブループリントの「init-method」でリモート サーバーに接続し、「destroy-method」で切断する tcp クライアントです。
この ChatProtocolClient の接続を使用して、チャネル ChatChannel からメッセージを読み書きする別のバンドルもあります。現在、ChatProtocolClient の Bean を作成し、作成された ChatProtocolClient サービスへの参照が注入される Bean ChatChannel を作成する xml ファイルがあります。
しかし、サーバーからの切断をどのように処理できますか? ブループリント フレームワークに、私の ChatProtocolClient インスタンスが現在使用できず、このインスタンスを登録解除する必要があることを伝えたいと思います。
できれば、Blueprint はすべての依存 Bean (Blueprint がこのサービス参照を注入した Bean) で destroy-method を自動的に呼び出し、新しい ChatProtocolClient Bean と依存関係が失敗したために破棄されたすべての Bean を初期化します。
これはどのように行うことができますか?
cxf - ブループリントを使用してCXFJAX-WSサーバーを構成する方法
単純なCXFJax-WsサーバーをServiceMixにデプロイしたいと思います。これは、サービスインターフェイスとimplクラスの両方を備えた1つのOSGIバンドルです。別のServiceMixサーバー(バージョン4.4.1)にデプロイする必要があるため、サーバーごとにURLアドレスを変更する必要があります。サーバー固有の構成をKaraf.cfgファイルで行い、残りをブループリントで行いたい。これはラクダを必要としません。ブループリントで何をすべきですか?特定のドキュメントが見つかりません。
java - Pax Web でデプロイされた Web バンドルから (Blueprint) OSGi サービスにアクセスする方法は?
現在、Pax Web を使用して OSGi Web アプリケーション バンドルを展開しています。この Web バンドルから、一連の OSGi サービスにアクセスする必要があります。システムの残りの部分では、サービスの作成と利用に Blueprint を使用しています。これは、プロキシ、ダンピングなどを提供するため、優れています。
Pax Web でデプロイされた Web アプリケーション バンドルから、これらの OSGi サービスにアクセスする最良の方法は何ですか?
私の考えは
1) osgi-bundlecontext 属性を介して ServletContext から BundleContext を取得し、OSGi ServiceTracker クラスを使用します。
2) 必要なサービスへの参照を含むブループリント コンテキスト ファイルを Web バンドルに作成します。Blueprint コンテキストは、Blueprint エクステンダーによって OSGi サービス レジストリに登録され、そこから取得して ID で Bean を検索できます。
3) Springs ContextLoaderListener などを使用して、web.xml ファイルにブループリント コンテキストを作成します。
オプション 1 は問題ありませんが、サービスを追跡する必要があり、Blueprint のメリットをまったく享受できません。
オプション 2 も問題なく動作しますが、タイミングの問題があります。実際には、アプリケーションをデプロイする 2 つのサービスがあります。web.xml ファイルを使用してデプロイする Pax Web エクステンダーと、Blueprint コンテキスト ファイルをデプロイする (私の場合は Gemini) Blueprint エクステンダーです。起動時にこれらのエクステンダーは同時にデプロイされ、Pax Web エクステンダーがサーブレット コンテキスト リスナーをインスタンス化するときに、アプリケーション コンテキストが OSGi サービス レジストリで使用できるという保証はありません。これは、OSGi サービスをコンテキスト リスナー コードから呼び出すことができないことを意味します。
オプション 3 - これが可能かどうかはよくわかりません。Spring DM がこのアプローチを使用していたように見えますか?
私は何かが欠けているに違いないと感じています - Pax Web でデプロイされた Web バンドル内から Blueprint を使用する簡単な方法はありますか?
osgi - プログラムでブループリントを使用するには?
XML を (宣言的に) 使用するのではなく、実行時にブループリント サービスを接続することは可能ですか? 私が欲しいのは、BeanDefinitionを作成する類似のインターフェースです
どういうわけか、これは他のバンドルからサービスを開始/停止する別のバンドルから呼び出す必要があります
osgi - OSGI の複数のサービス レジストリ
OSGI コンテナ内で複数のサービス レジストリを使用することはできますか? トランザクションのような方法でそれらを切り替えたい
jpa - OSGIサービスJPAPersistenceContextが注入されていません
Fuse ESB(Apache ServiceMixおよびKaraf)でOSGIサービスとして公開したいインターフェイスを持つコアライブラリがあります。目標は、他のバンドルがそれを使用できるようにすることです。このサービスはJPA(OpenJPA)とSpringを使用します。インターフェースは次のとおりです。
とクラス:
以下は省略形META-INF/spring/beans.xml
です:
そしてMETA-INF/persistence.xml
(略称):
OSGi以外の環境では、すべてがうまく機能します。これはfelixmaven-bundle-pluginを使用するため、OSGiサービスを作成するために、以下を追加しましたOSGI-INF/blueprint/osgi-context.xml
。
バンドルが正常にデプロイされ、サービスが登録されます。問題は、PatientService
が別のバンドルから参照されている場合、エンティティマネージャーが挿入されていないためNullPointerException
、find(Integer id)
メソッドにがスローされることです。以下は、消費者の抜粋ですMETA-INF/spring/consumer-context.xml
。
明確にするために、PatientService
はコンシューマーバンドルに注入されますが、エンティティマネージャーはプロバイダーバンドルに注入されません。また、元のサービスの開始時に次のログ出力が表示されるため、永続性ユニットの問題ではないようです。
何が起こっているのかを理解するために、オブジェクトメモリ参照とスタックトレースをPatientServiceJpaImpl
クラスのコンストラクターに記録しました。コンストラクターが2回呼び出されました(2つの異なるオブジェクトが作成されました)。
org.apache.felix
最初の出力は、で始まり、多かれ少なかれで終わるosgiコンテナから発信されているように見えますorg.apache.aries.blueprint
。org.springframework.osgi
2番目の出力は、で始まり、多かれ少なかれで終わるSpringFrameworkから発生しているように見えますorg.springframework.beans.BeanUtils
。
コンシューマーサービスが呼び出されると、その参照は、注入されたエンティティマネージャーを持たないブループリントのインスタンス化されたオブジェクトへの参照になります。また、ログから、オブジェクトのブループリントのインスタンス化の後に永続性ユニットがインスタンス化されPatientServiceJpaImpl
ます。
私はかなり長い間この問題を検索していじくり回してきました、そして私はアイデアを使い果たしました。皮肉なことに、実際にはある時点で機能していましたが、機能させるために多くの変更を加えたため、ネズミの巣であったため、元に戻すことができませんでした。
ブループリント管理対象オブジェクトに永続コンテキストが挿入されないのはなぜですか?任意のアイデアをいただければ幸いです。ありがとう。
spring - OSGi ブループリントとスプリング構成を組み合わせる
Spring 構成と OSGi Blueprint (Gemini Blueprint など) の組み合わせに関する良い/ベスト プラクティスはありますか? どの XML ファイルを使用していますか? それらを OSGi バンドル ( META-INF/spring
、OSGi-INF
) のどこに配置しますか? Gemini 以外のブループリントの実装と組み合わせてバンドルを再利用できるのは、次のうちどれですか?
背景: 現在、Spring/Spring DM から Spring/Blueprint への切り替えを進めています。ブループリントが要素を定義していることを認識してい<bean>
ます。ただし、Blueprint 仕様の限られた Bean 定義機能がすべてのニーズを満たしていないという状況に直面することがあります。そのため、バンドル内で Spring 構成を使用し、OSGi サービスを介してバンドルをワイヤリングするために Blueprint を使用することは良い選択のようです。
java - servicemix で複数の jar バージョンを使用する方法
私が使用しapache-servicemix-4.4.1 -fuse-03-06
ているのは、同じjarの2つのバージョンModel-1.0.jar
とModel-2.0.jar
. どちらも同じクラスで、メソッドが異なります。deploy フォルダーには、2 つのブループリント プロジェクトblueprint-one.jar
と blueprint-two.jar
. blueprint-one.jar
使用Model-1.0.jar
とblueprint-two.jar
使用Model-2.0.jar
しかし、展開フォルダーに両方のjarを展開すると、NoSuchMethod exception
.
誰でもこれについて私を助けることができますか?
jakarta-ee - Blueprint で OSGi サービスを EJB に注入する方法
ServiceTrackerを使用して OSGi サービスを EJB に注入できることはわかっています。
しかし、OSGi Blueprint XML 構成を使用して標準 EJB にサービスを注入し、EJB が別の場所で使用されているときにサービスを利用できるようにするにはどうすればよいでしょうか? それとも、EJB は独自のレイヤーで動作するため、本当に不可能なのでしょうか?
私は JBoss AS7 を使って Aries Blueprint と Gemini Blueprint でこれをやろうとしましたが、運が悪かったです。
ビーンの例として:
java - java.lang.ClassCastException: [B は java.lang.String にキャストできません
Field LoginId と Password を使用してエンティティ クラスを作成しました。
パスワードを暗号化し、AES_ENCRYPT を使用してデータベースに保管しています。
復号化されたパスワードのみを取得したい。そのため、NAtiveQueryis を使用して AES_DECRYPT を使用するのは、OPen JPA 2.0 です。
私が書いたクエリは次のとおりです。
しかし、次の例外が発生します。
私もこれを試しました:
ここでも、次のように同じ例外を取得しています。
リクエストを処理するクエリとエラーの間違いを教えてください。