Bonjour,
J'ai beaucoup de mal à comprendre comment compiler et simuler l'exemple du PurseApplet http://www.cs.ru.nl/~tews/jcdocs/app....2/rmiapp.html
Voici ce que j'ai fait:
J'ai saisi le code de l'applet, de l'interface et de l'implémentation des méthodes de l'interface (jusque là, c'est de la copie)
Je lance cref => ok
J'installe l'applet dans le simulateur (création) => ok
Je sélectionne l'applet dans le simulateur => ok
Le problème vient du lancement du client:
La ligne en rouge lève l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 package myPackage; import javacard.framework.UserException; import com.sun.javacard.clientlib.ApduIOCardAccessor; import com.sun.javacard.clientlib.CardAccessor; import com.sun.javacard.rmiclientlib.JCRMIConnect; public class PurseClient extends java.lang.Object { public static void main(String[] argv) { // arg[0] contains the debit amount short debitAmount = (short) Integer.parseInt("15") ; CardAccessor ca = null; System.out.println("débit"); try { // open and powerup the card System.out.println("0"); ca = new ApduIOCardAccessor(); System.out.println("a"); // create an RMI connector instance for the Java Card JCRMIConnect jcRMI = new JCRMIConnect(ca); System.out.println("b"); byte[] appAID = new byte[] {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,0x00}; System.out.println("1"); // select the Java Card applet jcRMI.selectApplet( appAID, JCRMIConnect.REF_WITH_CLASS_NAME ); System.out.println("2"); // obtain the initial reference to the Purse interface rmiRI myPurse = (rmiRI) jcRMI.getInitialReference() ; System.out.println("3"); // debit the requested amount try { short balance = myPurse.debit ( debitAmount ) ; System.out.println("débit effectué"); } catch ( UserException jce ) { short reasonCode = jce.getReason() ; } } catch (Exception e) { } finally { try { if(ca!=null){ ca.closeCard(); } }catch (Exception e) { } } } }
J'ai vérifié que le simulateur tournait toujours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:525) at java.net.Socket.connect(Socket.java:475) at java.net.Socket.<init>(Socket.java:372) at java.net.Socket.<init>(Socket.java:186) at com.sun.javacard.clientlib.ApduIOCardAccessor.<init>(Unknown Source) at paquet.PurseClient.main(PurseClient.java:24)
Je pense que le problème vient de la génération des stubs (que j'effectue via le plugin RMI d'éclipse: je travaille sous éclipse...)
J'ai passé des heures à essayer de trouver une solution, mais je pense que je passe à coté de quelque chose d'essentiel et c'est pour cela que je lance un appel à l'aide.
Merci à tous et bonnes vacances pour les chanceux
Partager