편집 2 : 실수를 발견했습니다. 생성자에서 Shareable 객체를 초기화하려고했습니다. 그 시점에서 클라이언트의 등록 메소드가 아직 호출되지 않았으므로 JCRE에는 AID가 없습니다. 내 서버의 getShareableInterfaceObject (AID 클라이언트 매개 변수, 바이트 매개 변수) 메소드는 클라이언트의 AID가 필요하지 않지만! = null은 JCRE가 클라이언트에서이 메소드를 호출하기 때문에 발생합니다. 이제 첫 번째 APDU를 처리 할 때 Shareable 객체를 초기화하고 이제는 작동합니다.Javacard 공유 가능 인터페이스 : lookupAID는 AID를 반환하지만 getAppletShareableInterface는 null을 반환합니다.
그리고 btw, 내 게시물의 서식을 돕는 owlstead에게 감사드립니다. 확실히 쉽게 읽을 수있게되었습니다!
나는 자바 카드 개발을위한 새로운 그리고 난 내 Shareable
인터페이스는 동작하지 않습니다.
나는 클라이언트 애플릿이 사용하고자하는 함수를 선언하는 인터페이스 클래스를 가지고있다. 내 서버 애플릿이이 클래스를 구현합니다. 내 클라이언트 애플릿이 AID를 조회하고 getAppletShareableInterface()
을 호출하여 인터페이스를 얻으려고합니다. 그러나 항상 null
을 반환합니다.
내 서버 애플릿의 getShareableInterface()
은 단지 return this;
으로 구성되어 있으므로 다른 곳에서는 오류가있는 것으로 생각됩니다. 그러나 나는 어디 있는지 모른다.
나는 JCWDE를 사용 중이며 코드를 통해 내 서버 애플릿 호출이 호출되므로 클라이언트 애플릿이이를 찾을 수 있어야합니다. 누구든지 잘못 될 수있는 몇 가지 포인터를 내게 줄 수 있습니까?
편집 :
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 올바른 AID를 반환하지만 getAppletShareableInterfaceObject은 서버 애플릿이 존재하지 않는 것처럼 null를 돌려줍니다.
일부 코드와 런타임 환경에 대한 정보가 있으면 도움이 될 것입니다. –
다행스럽게도 Java Card로 많은 작업을 수행 할 수 있지만 '공유 가능'인터페이스에서는 약간의 작업이 필요합니다. –
답변으로 게시하고 수락 할 수 있습니까? 그런 식으로 문제가 해결되지 않습니다. –