如何使arraylist远程访问

时间:2011-02-23 14:09:38

标签: java arraylist rmi

我有一个项目,我使用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;

}

2 个答案:

答案 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 {
    //...
}