2012-09-12 1 views
2

편집 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를 돌려줍니다.

+0

일부 코드와 런타임 환경에 대한 정보가 있으면 도움이 될 것입니다. –

+0

다행스럽게도 Java Card로 많은 작업을 수행 할 수 있지만 '공유 가능'인터페이스에서는 약간의 작업이 필요합니다. –

+0

답변으로 게시하고 수락 할 수 있습니까? 그런 식으로 문제가 해결되지 않습니다. –

답변

3

실수를 발견했습니다. 생성자에서 Shareable 객체를 초기화하려고했습니다. 그 시점에서 클라이언트의 등록 메소드가 아직 호출되지 않았으므로 JCRE에는 AID가 없습니다. 내 서버의 getShareableInterfaceObject (AID 클라이언트 매개 변수, 바이트 매개 변수) 메소드는 클라이언트의 AID가 필요하지 않지만! = null은 JCRE가 클라이언트에서이 메소드를 호출하기 때문에 발생합니다. 이제 첫 번째 APDU를 처리 할 때 Shareable 객체를 초기화하고 이제는 작동합니다.