4

Java クラスを動的に作成し、ネットワーク経由でさまざまな jvm にアクセスできるようにする必要があります。リフレクションと javassist ツールを使用しようとしましたが、何も機能しませんでした。Coherence分散キャッシュを使用しているシナリオを説明しましょう。クラスター全体で集約/フィルタリングを並行して実行する機能があります。たとえば、クラスに[動的クラス]がある場合、金額変数とgetAmount/setAmountメソッドがあります。次に、COHERENCE クエリを実行すると、クラスター全体で並行してプロセスが開始されます。

javassist とリフレクションを使用して、実行時にクラスを作成しようとしました。単一の JVM からはアクセスできますが、[coherence クラスタを介して] 他の jvm から同じクラスにアクセスしようとすると、. クラスが見つからないという例外が発生しています[リモートjvmがこのクラスを認識していないため].リモートjvmでも同じクラスを動的に作成し、メソッドにアクセスすることでこれを克服できます。しかし、構築されたメソッド/関数の一貫性はクラスを見つけることができません。誰かこの件で私を助けてくれませんか

4

2 に答える 2

1

A new class that gets created must be available to all nodes of the cluster. It means that the newly created bytecode must get on each node JVM's classpath/classloader. The simplest approach in my mind would be to put the generated classes on a shared network drive and have all JVMs point to that shared network location in their classpaths. Each time a JVM finds a reference to the new class it should load it dynamically from the network share.

于 2014-01-16T15:15:11.163 に答える
0

javassist によって作成されたバイト配列をコピーし、このバイト配列をワイヤ経由で送信して、このバイト配列をカスタムClassLoader. このようにして、クラスはすべての JVM で表現されます。

于 2013-12-29T14:47:14.203 に答える