远程 EJB 可以在没有包含与存储在 Map 中的对象关联的类文件的 jar 文件的情况下反序列化 Map 对象吗?
假设我们创建了以下 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,remoteMethod 调用会发生在远程 EJB 上还是会引发异常?