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:

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) {
				
				
			}

			}
		
	}

  }
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
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)
J'ai vérifié que le simulateur tournait toujours.
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