2016-11-13 9 views
0

異なるパッケージAIDを持つクライアントとサーバーとして、2つのアプレット間のインターフェースを共有したいと考えています。私はリンクを見た:[0x6f00 error casting Javacard Shareable Interfacejavacard共有クラスを使用して、クライアントとサーバーの2つのアプレット間のインターフェースを異なるパッケージで共有できますか?

上記のリンクでは:クライアントとサーバーの両方が同じパッケージにする必要があります。 私は今質問があります。パッケージのAIDが異なる場合、クライアントはサーバー機能を使用できますか? ありがとうございます。

答えて

4

クライアントとサーバーを同じパッケージにする必要はありません。彼らは両方とも、共用インターフェースを含む同じパッケージに依存する必要があります。

リンクされた質問で、インターフェイスに問題がありました.OPは、2つの別々のパッケージに同じ名前の2つのインターフェイスを宣言しました。そのため、キャストに失敗し、6F00ステータスがスローされました。あなたのクライアントコードでインターフェース2.Use

package com.test.mypackage.a; 
public interface SharedObject extends Shareable { 
     public void foo(); 
} 

:サーバー側のパッケージに

1.Declare共有インターフェースpublic


どうShareableインタフェースを使用するには:

package com.test.mypackage.b; 
import com.test.mypackage.a.SharedObject; 

... 
SharedObject obj = (SharedObject) JCSystem.getAppletShareableInterfaceObject(svrAid, (byte)0); 
  1. クライアントアプレットを構築するときは、サーバアプレットas a libraryを使用してください。
  2. サーバーアプレットcapを先にロードしてください。
  3. クライアントアプレットcapファイルを読み込みます。
+1

JC APIドキュメントから引用:**共有可能なインターフェイス:**共有メソッドのセットを定義する** _anインターフェイス。これらのインタフェースメソッドは、 を実装しているオブジェクトが別のコンテキストでアプレットによって所有されている場合に、あるコンテキストでアプレットから呼び出される です。コンテキストは何とかパッケージの同義語です。 – Abraham

+0

お返事いただきありがとうございます。私はあなたの答えを理解できません。私は簡単な質問がありますか?私は2つの独立したアプレットを持っていて、私は別のものに最初のアプレットでいくつかの関数を使用したい。これらのアプレットは完全に異なっています。パッケージAIDとアプレットAIDが異なることを意味します。共有可能なインターフェースで実装できますか? –

+0

アブラハムとヴォイタにもう一度感謝します。 「彼らは共有されたインターフェイスを含む同じパッケージに依存している必要があります。あなたはそれについてもっと説明できますか?パッケージとはコンテキストを意味しますか?同じパッケージに依存するカードに2つの異なるアプレットをインストールする必要がありますか? –

関連する問題