源代码如下,望大虾帮助,实在不知道为什么测试就是出错!
×××××××××××××××××××××××××Bank.java***********************
import java.util.*;
import java.rmi.*;public class Bank extends java.rmi.server.UnicastRemoteObject implements BankInterface
{
Hashtable clients;
public Bank() throws RemoteException
{
super();
clients = new Hashtable();
clients.clear();
}
public void add(String id, double money) throws RemoteException
{
((Compte)clients.get(id)).add(money);
}
public void reduce(String id, double money) throws RemoteException
{
((Compte)clients.get(id)).reduce(money);
}
public Position position(String id) throws RemoteException
{
return ((Compte)clients.get(id)).position();
}
}***************************BankInterface******************
import java.rmi.*;public interface BankInterface extends Remote
{
public void add(String id, double money) throws RemoteException;//存钱
public void reduce(String id, double money) throws RemoteException;//取钱
public Position position(String id) throws RemoteException;//查询
}×××××××××××××××××××××××××BanqueService××××××××××××
import java.rmi.*;public class BankService
{
public static void main(String args[])
{
try
{
Bank bank = new Bank();
Naming.rebind("localhost",bank);
System.out.println("Bank en marche !");
}
catch (Exception E)
{
E.printStackTrace();
}
}
}*********************Client********************
import java.rmi.*;public class Client
{
public void main(String id)
{
try
{
BankInterface b = (BankInterface)Naming.lookup("localhost");
b.add(id,100.00);
b.reduce(id,20.00);
Position p= b.position(id);
System.out.println("Position au " + p.dateDerniereOperation + " : " + p.solde);
}
catch (Exception E)
{
E.printStackTrace();
}
}
}
*******************************Account帐户***********
import java.util.*;public class Account
{
private Position position;
public Account(double solde, Date date)
{
position = new Position(solde,date);
} void add(double money)
{
position.solde = position.solde + money;
position.dateDerniereOperation = new Date();
}
void reduce(double money)
{
position.solde = position.solde - money;
position.dateDerniereOperation = new Date();
}
Position position()
{
return this.position;
}
}
**********************************Position******************
import java.io.*;
import java.util.*;public class Position implements Serializable
{
public double solde;
public Date dateDerniereOperation;
public Position(double solde, Date dateDerniereOperation)
{
this.solde = solde;
this.dateDerniereOperation = dateDerniereOperation;
}
}********************************Service服务器×××××××××××××××××××
import java.rmi.*;public class Service
{
public void main()
{
try
{
Banque banque = new Bank();
Naming.rebind("localhost",bank);
System.out.println("Bank en marche !");
}
catch (Exception E)
{
E.printStackTrace();
}
}
}
*****************************Test测试代码******************
public class Test
{
public static void main(String args[])
{
Client A = new Client();
A.main("1");
Client B = new Client();
B.main("2");
Client C = new Client();
C.main("3");
}
}
程序编译全部成功,rmic Banque, rmiregistry也成功,但是运行Test.java就是不成功,希望大虾帮忙,谢了!!!
×××××××××××××××××××××××××Bank.java***********************
import java.util.*;
import java.rmi.*;public class Bank extends java.rmi.server.UnicastRemoteObject implements BankInterface
{
Hashtable clients;
public Bank() throws RemoteException
{
super();
clients = new Hashtable();
clients.clear();
}
public void add(String id, double money) throws RemoteException
{
((Compte)clients.get(id)).add(money);
}
public void reduce(String id, double money) throws RemoteException
{
((Compte)clients.get(id)).reduce(money);
}
public Position position(String id) throws RemoteException
{
return ((Compte)clients.get(id)).position();
}
}***************************BankInterface******************
import java.rmi.*;public interface BankInterface extends Remote
{
public void add(String id, double money) throws RemoteException;//存钱
public void reduce(String id, double money) throws RemoteException;//取钱
public Position position(String id) throws RemoteException;//查询
}×××××××××××××××××××××××××BanqueService××××××××××××
import java.rmi.*;public class BankService
{
public static void main(String args[])
{
try
{
Bank bank = new Bank();
Naming.rebind("localhost",bank);
System.out.println("Bank en marche !");
}
catch (Exception E)
{
E.printStackTrace();
}
}
}*********************Client********************
import java.rmi.*;public class Client
{
public void main(String id)
{
try
{
BankInterface b = (BankInterface)Naming.lookup("localhost");
b.add(id,100.00);
b.reduce(id,20.00);
Position p= b.position(id);
System.out.println("Position au " + p.dateDerniereOperation + " : " + p.solde);
}
catch (Exception E)
{
E.printStackTrace();
}
}
}
*******************************Account帐户***********
import java.util.*;public class Account
{
private Position position;
public Account(double solde, Date date)
{
position = new Position(solde,date);
} void add(double money)
{
position.solde = position.solde + money;
position.dateDerniereOperation = new Date();
}
void reduce(double money)
{
position.solde = position.solde - money;
position.dateDerniereOperation = new Date();
}
Position position()
{
return this.position;
}
}
**********************************Position******************
import java.io.*;
import java.util.*;public class Position implements Serializable
{
public double solde;
public Date dateDerniereOperation;
public Position(double solde, Date dateDerniereOperation)
{
this.solde = solde;
this.dateDerniereOperation = dateDerniereOperation;
}
}********************************Service服务器×××××××××××××××××××
import java.rmi.*;public class Service
{
public void main()
{
try
{
Banque banque = new Bank();
Naming.rebind("localhost",bank);
System.out.println("Bank en marche !");
}
catch (Exception E)
{
E.printStackTrace();
}
}
}
*****************************Test测试代码******************
public class Test
{
public static void main(String args[])
{
Client A = new Client();
A.main("1");
Client B = new Client();
B.main("2");
Client C = new Client();
C.main("3");
}
}
程序编译全部成功,rmic Banque, rmiregistry也成功,但是运行Test.java就是不成功,希望大虾帮忙,谢了!!!
b.add(id,100.00);
b.reduce(id,20.00); ????
我这儿一直过不去
Bank bank = new Bank();
Naming.rebind("localhost",bank); bank改为ba,估计名字出现冲突