0

複数の @OnServer Function Interface を登録することはできますか? クライアント側プロキシの @OnServer で複数の関数を有効にすると、サーバーは次のエラーで起動に失敗します。

コンストラクター引数の設定中に、Bean 'org.springframework.data.gemfire.function.execution.GemfireOnServerFunctionTemplate#0' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'org.springframework.data.gemfire.function.execution.GemfireOnServerFunctionTemplate#0' という名前の Bean 作成エラー: コンストラクター引数の設定中に Bean 'gemfireCache' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'gemfireCache' という名前の Bean の作成中にエラーが発生しました: FactoryBean がオブジェクトの作成時に例外をスローしました。ネストされた例外は java.lang.IllegalStateException: 分散システムへの接続がこの VM に既に存在します。次の構成があります。

gemfire 関数はパッケージに配置され、以下がコンポーネント スキャン用の appContext に追加されます。

<gfe-data:function-executions base-package="com.test.data.gemfire"/>

OnServer 関数を 1 つだけ登録するという標準的な方法はありますか (制限が厳しすぎるように思えます)。どんなポインタも役に立ちます。

4

1 に答える 1

0

複数の @OnServer Function Interface を登録することはできますか?

はい; 絶対!

クライアント側プロキシの @OnServer で複数の関数を有効にすると、サーバーは次のエラーで起動に失敗します。

これは紛らわしい発言です。サーバーとは、アプリケーション、GemFire キャッシュ クライアント JVM プロセスを意味すると思います。 @OnServer注釈はクライアントにのみ適用され、「GemFire サーバー」 (分散システムのピア キャッシュ メンバーなど) では使用できません。

java.lang.IllegalStateException: 分散システムへの接続は、この VM に既に存在します。次の構成があります。

これは非常に古い問題 (および SDG による例外) であり、古いバージョン (1.7.0.RELEASE 未満) を使用していることを示しています。

同様の問題は、クライアントとサーバー間で SSL を使用する場合のSGF-4141.6.2.RELEASEで指摘されており、最初の修正は でリリースされました1.7 RC1

残念ながら、これで問題全体が解決したわけではないため、SGF-416およびSGF-4681.8 RC1での SDGリリースのために追加作業が再度実行されました。

言うまでもなく、これは非常に複雑な問題であり、GemFire の分散システム構成の検証チェックと、必要に応じてSpringコンテキストでClientCacheandPoolを個別の Bean として構成する機能 (つまり、XML 構成ファイルに と の両方<gfe:client-cache><gfe:pool>要素が存在することによる) が原因でした。調整が必要です。

したがって、最新のSpring Data GemFireリリースである1.8.3.RELEASEにアップグレードすることをお勧めします。1.7.5.RELEASEまた、完全には確信が持てませんが、最新のものも動作するはずです。Spring Data GemFire の プロジェクト ページで常に最新の情報を見つけることができます。

他にご不明な点がある場合やサポートが必要な場合は、お知らせください。

ありがとう、ジョン

于 2016-09-27T18:46:09.933 に答える