This code sample provides an implementation for the remote interface. The implementation runs on a Java Card 3 platform, so it can use only features that are supported by a Java Card 3 platform.
package examples.purse; import javacard.framework.*; import javacard.framework.service.*; import java.rmi.*; public class PurseImpl extends CardRemoteObject implements Purse { private short balance; PurseImpl() { super(); balance = 0; } public short debit(short amount) throws RemoteException, UserException { if ((amount < 0) || (amount > MAX_AMOUNT)) UserException.throwIt(REQUEST_FAILED); balance -= amount; return balance; } public short credit(short amount) throws RemoteException, UserException { if ((amount < 0) || (balance < amount)) UserException.throwIt(REQUEST_FAILED); balance += amount; return balance; } public short getBalance() throws RemoteException, UserException { return balance; } }
Here, the remote interface is the Purse
interface, which declares the remotely accessible methods. By implementing this interface, the class establishes a contract between itself and the compiler, by which the class promises that it will provide method bodies for all the methods declared in the interface:
public class PurseImpl extends CardRemoteObject implements Purse
The class also extends the javacard.framework.service.CardRemoteObject
class. This class provides basic support for remote objects, and in particular the ability to export or unexport an object.