マップに格納されているオブジェクトに関連付けられたクラス ファイルを含む jar ファイルがなくても、リモート EJB はマップ オブジェクトをデシリアライズできますか?
次の Java クラスを作成したとします。
import java.io.Serializable;
public class MyCustomObject implements Serializable
{
private static final long serialVersionUID = -3100182702835154967L;
private String myString;
private int myInt;
public String getMyString()
{
return myString;
}
public void setMyString(String myString)
{
this.myString = myString;
}
public int getMyInt()
{
return myInt;
}
public void setMyInt(int myInt)
{
this.myInt = myInt;
}
}
このクラスのインスタンスを Map に配置します。
Map<String, Object> mapOfObjects = new HashMap<String, Object>();
MyCustomObject customObject = new MyCustomObject();
customObject.setMyInt(3);
customObject.setMyString("Hello");
mapOfObjects.put("MyCustomObjectKey", customObject);
この Map オブジェクトをリモート EJB に渡すと、リモート EJB が MyCustomObject クラスへの参照を持たないと仮定すると、デシリアライズ プロセス中に例外がスローされますか?
Map からカスタム オブジェクトを取得するには、MyCustomObject クラスへの参照が必要であることを理解しています。
public class RemoteEJB()
{
public void remoteMethod(Map<String,Object> mapOfObjects)
{
MyCustomObject customObject = (MyCustomObject)mapOfObjects.get("MyCustomObjectKey"); //java.lang.NoClassDefFoundError - Won't compile
}
}
問題は、Map からオブジェクトを取り出したくない場合、リモート EJB で remoteMethod 呼び出しが行われるか、それとも例外がスローされるかということです。