Javacard Shareable Interface: lookupAID gibt AID zurück, getAppletShareableInterface jedoch null

edit 2: Den Fehler gefunden. Ich habe versucht, das Shareable-Objekt im Konstruktor zu initialisieren. Zu diesem Zeitpunkt ist die Registrierungsmethode des Clients noch nicht aufgerufen, sodass die JCRE keine AID hat. Während die getShareableInterfaceObject-Methode (AID clientaid, byte parameter) auf meinem Server nicht erfordert, dass die AID des Clients! = Null ist, ist dies bei JCRE wahrscheinlich der Fall, da diese Methode für meinen Client aufgerufen wird. Ich initialisiere jetzt mein Shareable-Objekt, wenn ich meine erste APDU verarbeite, und es funktioniert jetzt.

Und übrigens, danke owlstead, dass Sie mir bei der Formatierung meines Beitrags geholfen haben. Auf jeden Fall leichter zu lesen!

Ich bin neu in der Java Card-Entwicklung und kann meine nicht bekommenShareable Schnittstelle zur Arbeit.

Ich habe eine Interface-Klasse, die eine Funktion deklariert, die mein Client-Applet verwenden möchte. Mein Server-Applet implementiert diese Klasse. Mein Client-Applet sucht nach der AID und versucht, die Schnittstelle durch Aufrufen abzurufengetAppletShareableInterface(). Das kommt aber immer wiedernull.

Mein Server Applet istgetShareableInterface() besteht aus nurreturn this;, also ich schätze der fehler liegt woanders. Aber ich habe keine Ahnung wo.

Ich benutze die JCWDE und gehe den Code durch. Ich sehe, dass sich meine Server-Applet-Aufrufe registrieren, damit das Client-Applet sie finden kann. Kann mir jemand einen Hinweis geben, was schief gehen könnte?

bearbeiten:

public interface IF extends Shareable {
    public void method();
}

public class Server extends Applet implements IF {
    public getShareableInterfaceObject {
        return this;
    }
}

public class Client extends Applet {

    private Client() {
        AID ServerAID = JCSystem.lookupAID(byteArrayAID, (short)0, (byte)byteArrayAID.length);
        interface = (IF)JCSystem.getAppletShareableInterfaceObject(ServerAID, (byte)0x00);
    }

    public void process(APDU apdu) {
        interface.method();
    }
}

lookupAID gibt die richtige AID zurück, aber getAppletShareableInterfaceObject gibt null zurück, als ob das Server-Applet nicht vorhanden wäre.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage