我有一个项目,我使用Java RMI使对象可以远程访问其他对象。我需要将以下类设为remote:
public interface MarketBB extends Remote
{
public ArrayList<CloudEntry> getMarketBB() throws RemoteException;
public void moveAMP(int fromCloud, int toCloud) throws RemoteException;
}
我遇到的问题是因为ArrayList持有CloudEntry对象,当从另一个对象调用getMarketBB方法时,不会返回任何内容。
有没有办法让CloudEntry类的ArrayList可以远程访问?
以下是CloudEntry类的代码:
public class CloudEntryImpl implements CloudEntry {
int cloudId;
String cloudName;
double speedGHz;
double costPerGhzH;
double commsCost;
double commsTime;
int noAMPs;
//constructor, get and set methods for fields
}
CloudEntry界面:
public interface CloudEntry extends Remote {
public void setNoAmps(int noAmps) throws RemoteException;
public String getCloudName() throws RemoteException;
public String getCloudDetails() throws RemoteException;
}
答案 0 :(得分:0)
getMarketBB()返回ArrayList的副本。你不能让它返回列表的“实时”视图。
相反,我建议您提供与您尝试对列表匹配的方法。恕我直言这是有或没有RMI的最佳实践。
public void addCloudEntry(CloudEntry ce);
public CloudEntry getCloudEntry(int i);
答案 1 :(得分:0)
您的CloudEntryImpl
不可序列化。尝试将其更改为:
public class CloudEntryImpl extends UnicastRemoteObject implements CloudEntry {
//...
}