我仍然试图通过使用Java RMI创建一个拍卖系统来自学Java,所以如果这很简单,请耐心等待。
我在服务器类中创建了一个ArrayList,就像这样;
public class auctionServer {
public static ArrayList<ItemInfo> itemSet = new ArrayList<ItemInfo>();
public auctionServer() {
try
{
System.out.println("Array list created...");
LocateRegistry.createRegistry(1099);
auctionInterface aImpl = new auctionImpl();
Naming.rebind("rmi://localhost/AuctionService", aImpl);
System.out.println("Server running.....\n");
}
catch (Exception e) {
System.out.println("Server Error: " + e);
}
}
public static void main(String args[]) {
new auctionServer();
}
}
然后我创建了一个&#34;客户端&#34;可以创建auctionItems并将它们添加到存储在拍卖服务器上的列表中。但是,当我打印服务器上的arraylist的内容时,它只打印该客户端添加的对象。
例如,我开始了一个&#34; sellerClient&#34;创建一个项目并列出它。这将对象添加到服务器中,当我打印arraylist的内容时,它打印正常。
然后我开始另一个&#34; sellerClient&#34; (在不同的cmd行中)当我来打印arraylist的内容时,它表明arraylist是空的。我很难理解为什么,即使服务器在创建第一个和第二个客户端期间仍在运行,它也表示它是空的。
以下是我用来将对象添加到服务器的arraylist的代码;
ItemInfo createdItem = new ItemInfo();
System.out.println("---- Enter the auctionName ----");
createdItem.setAuctionName(scanner.next());
System.out.println("---- Enter the auctionID ----");
createdItem.setAuctionID(scanner.nextInt());
System.out.println("---- Enter the item startPrice in pound sterling ----");
createdItem.setCurrentPrice(scanner.nextInt());
System.out.println("---- Enter the buyoutPrice in pound sterling ----");
createdItem.setBuyoutPrice(scanner.nextInt());
auctionServer.itemSet.add(createdItem);
System.out.println("Item listed!");
我使用for循环打印数组列表的内容;
for(ItemInfo createdItem : auctionServer.itemSet){
System.out.println(createdItem.auctionName);
System.out.println("AuctionID: " + createdItem.auctionID);
System.out.println("Current Price: £" + createdItem.currentPrice);
System.out.println("Buyout Price: £" + createdItem.buyoutPrice);
}
非常感谢任何帮助。
MichaelGG。