問題/コンテキスト。リモート アクターにメッセージを送信する必要があります。これらのメッセージには、受信者側では不明なクラスのオブジェクトが含まれている場合があります。そして、ClassNotFoundException を回避するために、このような状況をインターセプトする必要があります。
解決策の 1 つは、メッセージの逆シリアル化時に不明なクラスをインターセプトすることです。次に、リモート アクターが必要なクラスを持っていないことを送信者に伝えることができるように、メッセージを別のアプリケーション レベルのメッセージに置き換えることができます。
カスタム de/serializators は次のメソッドを持つ akka.serialization.Serializer を実装する必要があるため、このような傍受が可能かどうかはわかりません。
def fromBinary(bytes: Array[Byte],
clazz: Option[Class[_]]): AnyRef
ここで、問題は、未知のクラスのオブジェクトに対する Class オブジェクトの構築 (Akka から行われる) に起因します。
私のニーズに対応するために、下位レベルのポイントで Akka デシリアライゼーションをカスタマイズする方法はありますか?
その他のソリューション。
- この問題は、別の解決策が提案されている次の SO の質問に示されているものと似ています:リモート オブジェクトをアクセス可能な最も狭いクラスに逆シリアル 化する ただし、その解決策は私にとって十分ではありません。インターフェイスを制限することは問題ありませんが、追加のメソッドを使用したクラスの実装が必要になるからです。